Давайте сделаем что-нибудь полезное. К примеру, определим, какой
браузер использует тот, кто смотрит в данный момент нашу страницу.
Для этого мы проверим строку с именем браузера, посылаемую нам в
HTTP-запросе. Эта информация хранится в переменной. Переменные в PHP всегда
предваряются знаком доллара. Интересующая нас в данный момент переменная
называется $_SERVER["HTTP_USER_AGENT"].
Пару слов об автоматической глобализации переменных в PHP:
$_SERVER - специальная
зарезервированная переменная PHP, которая содержит всю информацию,
полученную от Web-сервера. Она является автоглобализованной (или
суперглобальной). Для более подробной информации смотрите раздел
"Суперглобальные
переменные". Эти специальные переменные появились в PHP, начиная
с версии 4.1.0. До этого
использовались массивы $HTTP_*_VARS, такие, как
$HTTP_SERVER_VARS. Эти массивы, несмотря на то,
что они уже устарели, до сих пор существуют (см. замечания по
старым программам).
Для вывода данной переменной мы сделаем так:
Пример 2-2. Вывод значения переменной (элемента массива)
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
|
Пример вывода данной программы:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) |
|
В PHP есть огромное количество типов
переменных. В предыдущем примере мы печатали элемент
массива. Массивы
в PHP являются очень мощным средством.
$_SERVER - просто переменная, которая предоставлена
вам языком PHP. Список таких переменных можно посмотреть в разделе
"Зарезервированные переменные".
А можно получить их полный список с помощью такой программы:
Пример 2-3. Показываем все стандартные переменные с помощью
функции phpinfo() |
Если открыть данный файл в браузере, вы увидите страничку с
информацией о PHP, а также список всех доступных вам переменных.
Внутрь тегов PHP можно помещать множество команд и создавать
кусочки кода, делающие гораздо большее, чем просто вывод на экран.
К примеру, если мы хотим сделать проверку на Internet Explorer, мы
можем поступить так:
Пример 2-4. Пример использования управляющих
структур и функций
<?php if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) { echo "Вы используете Internet Explorer<br />"; } ?>
|
Пример вывода данной программы:
You are using Internet Explorer<br /> |
|
Здесь мы показали несколько новых элементов. Во-первых, здесь есть
команда if.
Если вам знаком основной синтаксис языка C, то вы уже заметили что-то
схожее. Если же вы не знаете C или подобного по синтаксису языка, то
лучший вариант - взять какую-либо книжку по PHP и прочитать ее. Другой
вариант - почитать раздел "Описание языка"
данного руководства. Список книг по PHP можно найти здесь:
http://www.php.net/books.php.
Во-вторых, здесь есть вызов функции strstr().
strstr() - встроенная в PHP функция, которая ищет
одну строку в другой. В данном случае мы ищем строку
"MSIE" в $_SERVER["HTTP_USER_AGENT"].
Если строка не найдена, эта функция возвращает FALSE, если найдена -
TRUE. Если она вернет TRUE, то условие в
if окажется истинным, и
код в командных скобках ({ }) выполнится. В противном случае данный код
не выполняется. Попробуйте создать аналогичные примеры с использованием
команд if,
else, и других функций,
таких, как strtoupper() и strlen().
Также примеры содержатся во многих описаниях функций в данном руководстве.
Продемонстрируем, как можно входить в режим кода PHP и выходить из
него прямо внутри кода:
Пример 2-5. Смешение режимов HTML и PHP
<?php if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) { ?> <h3>strstr вернул true</h3> <center><b>Вы используете Internet Explorer</b></center> <?php } else { ?> <h3>strstr вернул false</h3> <center><b>Вы не используете Internet Explorer</b></center> <?php } ?>
|
Пример вывода данной программы:
<h3>strstr вернул true</h3>
<center><b>Вы используете Internet Explorer</b></center> |
|
Вместо использования команды PHP echo для вывода, мы вышли из режима
кода и послали содержимое HTML. Важный момент здесь - то, что логическая
структура кода PHP при этом не теряется. Только одна HTML-часть будет
послана клиенту в зависимости от результата функции
strstr() (другими словами, в зависимости от того,
найдена строка "MSIE" или нет).