Делаем что-нибудь полезное
Давайте сделаем что-нибудь полезное. К примеру, определим, какой
браузер использует тот, кто смотрит в данный момент нашу страницу.
Для этого мы проверим строку с именем браузера, посылаемую нам в
HTTP-запросе. Эта информация хранится в переменной. Переменные в PHP всегда
предваряются знаком доллара. Интересующая нас в данный момент переменная
называется $_SERVER['HTTP_USER_AGENT'].
Замечание:
$_SERVER - специальная
зарезервированная переменная PHP, которая содержит всю информацию,
полученную от Web-сервера. Её также называют суперглобальной.
Для более подробной информации смотрите раздел
"Суперглобальные
переменные". Эти специальные переменные появились в PHP, начиная
с версии » 4.1.0. До этого
использовались массивы $HTTP_*_VARS, такие как
$HTTP_SERVER_VARS. Несмотря на то,
что эти массивы уже устарели, они до сих пор существуют (см. замечания по
старым программам).
Для вывода данной переменной мы сделаем так:
Пример #1 Вывод значения переменной (элемента массива)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
Пример вывода данной программы:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
В PHP существует огромное количество типов
переменных. В предыдущем примере мы печатали элемент
массива. Массивы
могут быть очень полезны.
$_SERVER - это просто одна из переменных, которые предоставляются
вам языком PHP. Список таких переменных можно посмотреть в разделе
"Зарезервированные переменные" или
просмотрев вывод функции phpinfo(), используемой в
примере в предыдущем разделе.
Внутрь PHP-тегов можно помещать несколько выражений и создавать
маленькие блоки кода, делающие больше, чем простой вызов echo.
Например, если вы хотите добавить проверку для Internet Explorer,
можно сделать так:
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo 'Вы используете Internet Explorer.<br />';
}
?>
Пример вывода данной программы:
Вы используете Internet Explorer.<br />
Здесь мы показали несколько новых элементов. Во-первых, здесь есть
конструкция if.
Если вы знакомы с основами синтаксиса языка C, то вы уже заметили что-то
схожее. Если же вы не знаете C или подобного по синтаксису языка, то
лучший вариант - взять какую-либо вводную книжку по PHP и прочитать
первые пару глав. Другой вариант - почитать раздел "Описание языка"
данного руководства.
Кроме этого, здесь присутствует вызов функции strpos().
strpos() - встроенная в PHP функция, которая ищет
одну строку в другой. В данном случае мы ищем строку
'MSIE' (так называемую "иголку" - needle)
в $_SERVER['HTTP_USER_AGENT'] (в так называемом "сене"
- haystack). Если "иголка" найдена внутри "сена", функция возвращает
позицию "иголки" относительно начала "сена". В противном случае она возвращает FALSE.
Если она не вернет FALSE, то условие в
if окажется истинным (TRUE), и
код в фигурных скобках ({ }) выполнится. В противном случае этот код
не выполняется. Попробуйте создать аналогичные примеры с использованием
команд if,
else и других функций,
таких, как strtoupper() и strlen().
Также подобные примеры содержатся во многих описаниях функций в данном руководстве.
Если вы не знаете, как использовать функции, возможно, вам стоит
прочесть страницу руководства о том,
как читать определения функций и раздел о
функциях в PHP.
Продемонстрируем, как можно входить в режим кода PHP и выходить из
него даже прямо посередине блока с кодом:
Пример #3 Смешение режимов HTML и PHP
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos(), должно быть, вернул не false</h3>
<p>Вы используете Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() вернул false</h3>
<p>Вы не используете Internet Explorer</p>
<?php
}
?>
Пример вывода данной программы:
<h3>strpos(), должно быть, вернул не false</h3>
<p>Вы используете Internet Explorer</p>
Вместо использования команды PHP echo для вывода, мы вышли из режима
кода и просто послали содержимое HTML. Важный момент здесь то, что логическая
структура кода PHP при этом не теряется. Только одна HTML-часть будет
послана клиенту в зависимости от результата функции
strpos() (другими словами, в зависимости от того,
найдена была строка MSIE или нет).