Делаем что-нибудь полезное

Давайте сделаем что-нибудь полезное. К примеру, определим, какой браузер использует тот, кто смотрит в данный момент нашу страницу. Для этого мы проверим строку с именем браузера, посылаемую нам в HTTP-запросе. Эта информация хранится в переменной. Переменные в PHP всегда предваряются знаком доллара. Интересующая нас в данный момент переменная называется $_SERVER['HTTP_USER_AGENT'].

Замечание:

$_SERVER - специальная зарезервированная переменная PHP, которая содержит всю информацию, полученную от Web-сервера. Её также называют суперглобальной. Для более подробной информации смотрите раздел Суперглобальные переменные. Эти специальные переменные появились в PHP, начиная с версии » 4.1.0. До этого использовались массивы $HTTP_*_VARS, такие как $HTTP_SERVER_VARS. С версии PHP 5.4.0 эти старые переменные удалены (см. замечания по старым программам).

Для вывода данной переменной мы сделаем так:

Пример #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, можно сделать так:

Пример #2 Пример использования управляющих структур и функций

<?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 или нет).

add a note add a note

User Contributed Notes 3 notes

up
190
Declan Kelly
3 years ago
Please note that Internet Explorer 11 no longer contains MSIE in its user agent string, for example on Windows 8 with IE11 I get the following:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

So if you want to include a test for IE11, the code above changes to:

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE ||
   
strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) {
    echo
'You are using Internet Explorer.<br />';
}
?>
up
20
Bilal S.
1 year ago
On Edge, the user agent string does not contain 'MSIE' neither 'Trident', but rather 'Edge'.
up
18
rfantin at coralwood dot com
10 years ago
While it's easy to get carried away mixing your logic and presentation together since it's so easy to do, you're better off using PHP within HTML only to fill in values, or include other source files.

Keep your actual processing in separate libraries that are called before you send any headers to the page. Try to avoid calling a script that retrieves or sets information, or manipulates it in the middle of your HTML. You'll find it's much easier to maintain.
To Top