Добавить в тег заголовка страницы на основе переменной из URL

Я видел следующую тему, но это немного выше моего понимания...

Как можно Я динамически меняю тег ‹title› в php на основе значений URL

По сути, у меня есть страница index.php (в ней нет php, просто названного на будущее - может быть, сейчас!). Он содержит множество галерей в стиле лайтбоксов, которые можно активировать по внешней ссылке с помощью переменной в URL-адресе, например. index.php?open=true2, index.php?open=true3 и т. д.

Я хотел бы, чтобы тег заголовка index.php включал существующие статические данные + добавлял дополнительные слова на основе переменной URL - например. если URL open=true2 добавить «галерею автомобилей», если URL open=true3 добавить «галерею кошек», если URL не имеет переменной, ничего не добавлять к заголовку.

Кто-нибудь может помочь? Я искал, но либо пропустил смысл сообщений, либо он не был освещен (на мой любительский уровень).

Большое спасибо. Павел.


person Paul    schedule 27.04.2011    source источник


Ответы (4)


В верхней части вашего php-скрипта поместите это:

<?php

# define your titles
$titles = array('true2' => 'Car Gallery', 'true3' => 'Cat Gallery');

# if the 'open' var is set then get the appropriate title from the $titles array
# otherwise set to empty string.
$title = (isset($_GET['open']) ? ' - '.$titles[$_GET['open']] : '');

?>

А затем используйте это, чтобы включить свой собственный заголовок:

<title>Pauls Great Site<?php echo htmlentities($title); ?></title>

person Ben    schedule 27.04.2011
comment
Я протестировал его очень быстро, потому что он включает в себя возможность конвертировать переменную URL во что-то более подходящее для заголовка. Отлично работает в Firefox. Большое спасибо. - person Paul; 27.04.2011
comment
Спасибо всем за комментарии/помощь. Я буду следить за этой темой, особенно в отношении любых текущих потенциальных проблем с атаками. - person Paul; 27.04.2011
comment
Рады, что смогли помочь Павлу. @Treffynnon спасибо за добавление htmlentities(). Хороший улов. - person Ben; 27.04.2011

<?php
    if( array_key_exists('open', $_GET) ){
        $title = $_GET['open'];
    }else{
        $title = '';
    }
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>

<body>
The content of the document......
</body>

</html>

http://www.w3schools.com/TAGS/tag_title.asp

http://php.net/manual/en/reserved.variables.get.php

person Homer6    schedule 27.04.2011

PHP может получать информацию из строки запроса URL (www.yoursite.com?page=1&cat=dog и т. д.). Вам нужно получить эту информацию, убедиться, что она не является вредоносной, а затем вы можете вставить ее в заголовок. Вот простой пример: для вашего приложения убедитесь, что вы очищаете данные и проверяете, что они не являются вредоносными:

<?php
$open = "";

// check querystring exists
if (isset($_GET['open'])) {
// if it does, assign it to variable
$open = $_GET['open'];
}
?>

<html><head><title>This is the title: <?php $open ?></title></head>

PHP имеет множество функций для экранирования данных, которые могут содержать неприятные вещи — если вы посмотрите htmlspecialchars и htmlentities, вы должны найти информацию, которая поможет.

person James    schedule 27.04.2011
comment
Да, однако все же важно предупредить об этом. - person Treffynnon; 27.04.2011

Некоторые из других ответов открыты для злоупотреблений, попробуйте вместо этого:

<?php
    if(array_key_exists('open', $_GET)){
        $title = $_GET['open'];
    } else {
        $title = '';
    }
    $title = strip_tags($title);
?>
<html>
    <head>
        <title><?php echo htmlentities($title); ?></title>
    </head>
    <body>
            <p>The content of the document......</p>
    </body>
</html>

В противном случае, как упомянул @Ben. Сначала определите заголовки в своем PHP, чтобы люди не могли напрямую вставлять текст в ваш HTML.

person Treffynnon    schedule 27.04.2011
comment
Спасибо, что добавили важную деталь вашего ответа - echo htmlentities(..) к принятому ответу. - person ToolmakerSteve; 29.10.2019