update page now
PHP 8.5.2 Released!

Примеры кода

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

Замечание:

$_SERVER — суперглобальная зарезервированная переменная, которую PHP заполняет информацией о запросе, среде выполнения и серверном окружении. Дополнительную информацию о таких переменных содержит раздел «Суперглобальные переменные».

Для вывода значения элемента массива, который хранится в переменной, напишем следующий код:

Пример #1 Вывод значения элемента массива

<?php

echo $_SERVER['HTTP_USER_AGENT'];

Пример вывода программы:

Mozilla/5.0 (Linux) Firefox/112.0

В PHP-переменных хранят числа, строки, массивы и значения других типов. Тип значения, элемент которого выводил код предыдущего примера, называется массивом. Массивы полезны для хранения значений произвольных типов.

Переменная $_SERVER — только один пример переменной, к которой PHP автоматически открывает доступ. Список таких переменных приводит раздел «Зарезервированные переменные» или вывод функции phpinfo(), которую приводил как пример предыдущий раздел.

В PHP-тег разрешается помещать больше одной инструкции и создавать небольшие блоки кода, которые делают больше, чем простой вызов инструкции echo. Например, если требуется проверить, что используется браузер Firefox, делают так:

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

<?php

if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo
'Вы пользуетесь браузером Firefox.';
}

Пример вывода программы:

Вы пользуетесь браузером Firefox.

Здесь вводится ряд новых понятий. Во-первых, в коде появилась инструкция if. Если вы знакомы с основами синтаксиса языка C, код выглядит для вас логичным. Иначе, вероятно, лучше взять книгу об основах языка PHP и прочитать одну-две начальных главы или почитать раздел «Справочник языка» этого руководства.

Во-вторых, в коде появился вызов функции str_contains(). Функция str_contains() — встроенная в PHP функция, которая определяет, содержит ли строка другую строку. В примере функция ищет строку «Firefox» (т. н. «иголку», или needle) в элементе $_SERVER['HTTP_USER_AGENT'] (в т. н. «стоге сена», или haystack). Если функция нашла «иголку» в «стоге сена», она возвращает логическое значение true. Иначе функция возвращает логическое значение false. Если функция вернёт true, то условие в выражении конструкции if окажется истинным (true), а PHP выполнит код в фигурных скобках {}. Иначе код не выполняется. Попробуйте создать аналогичные примеры с использованием инструкций if и else, а также других функций наподобие strtoupper() и strlen(). Каждая страница руководства также содержит примеры. Почитайте страницу руководства о том, как читать определения функций, и раздел о PHP-функциях, если не знаете, как использовать функции.

Пойдем дальше и покажем, как переходить в режим PHP и выходить из режима интерпретации даже в середине блока PHP-кода:

Пример #3 Смешение режимов HTML и PHP

<?php

if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
?>
<h3>Функция str_contains() вернула значение true</h3>
<p>Вы просматриваете страницу в браузере Firefox.</p>
<?php
} else {
?>
<h3>Функция str_contains() вернула значение false</h3>
<p>Ваш браузер не похож на Firefox.</p>
<?php
}

Пример вывода данной программы:

<h3>Функция str_contains() вернула значение true</h3>
<p>Вы просматриваете страницу в браузере Firefox.</p>

Вместо вывода текста инструкцией echo, мы вышли из режима интерпретации PHP-кода и написали HTML-разметку. Логическая последовательность выполнения PHP-кода при этом сохраняется: PHP отправит пользователю только один блок HTML-разметки на основе значения, которое вернёт функция str_contains() по результатам поиска подстроки Firefox.

Добавить

Примечания пользователей 1 note

up
125
Declan Kelly
11 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 />';
}
?>
To Top