Суперглобальные переменные в PHP. Как получить доступ к информации окружения?

суперглобальные переменные в php. как получить доступ к информации окружения?

Окружение выполнения скрипта

В первых статьях нашего учебного курса мы говорили о принципах взаимодействия WEB-сервера Apache и интерпретатора PHP. Это было не случайно. Необходимо понять одну вещь. Программы, написанные на PHP, могут получать доступ к информации об окружении, в котором они выполняются. В зависимости от полученной информации, программа способна менять свое поведение.

Мы знаем, что запросы пользователей получает и обрабатывает WEB-сервер (к примеру, Apache). Если он определит, что осуществлен запрос к скрипту, то происходит запуск интерпретатора PHP для выполнения этого скрипта. В момент запуска интерпретатора создаются специальные наборы данных, именуемые суперглобальными переменными.

Суперглобальные переменные — переменные доступные во всех областях видимостей: глобальное пространство, тело функции и метод объекта. Они хранят в себе административную информацию разного рода (в зависимости от типа переменной), и имеют структуру ассоциативного массива.

Заметка
В данной статье речь пойдет о таких составляющих окружения как сессии, HTTP-запросы и загрузки файлов. Если вы незнакомы с реализацией этих возможностей в PHP, то не расстраивайтесь. Далее в учебном курсе мы подробно их рассмотрим.

Список суперглобальных переменных

Всего существует девять суперглобальных переменных. Они доступны при выполнении любого скрипта. Данные, содержащиеся в них, могут меняться вместе с состоянием окружения. Ниже мы приводим таблицу с их именами и подробным описанием.

Имя Описание
$_GET Содержит данные HTTP-запроса, переданного методом GET. К примеру, строка test-site.ru/script-name.php?var=15, введенная в браузере, вызовет на выполнение скрипт с именем script-name.php. В данном скрипте суперглобальная переменная $_GET['var'] будет иметь значение 15.
$_POST Содержит данные HTTP-запроса, переданного методом POST. К примеру, в ней может содержаться информация, которую пользователь ввел в форму обратной связи.
$_FILES При осуществлении загрузки файлов, эта переменная окружения будет содержать данные об именах, типах, размерах файлов пришедших с запросом.
$_COOKIE Содержит данные, связанные с обменом сервера и браузера специальными кусочками информации, именуемыми cookie.
$_REQUEST Эта суперглобальная переменная совмещает в себе $_GET, $_POST и $_COOKIE.
$_SESSION Содержит в себе данные, связанные с пользовательской сессией. Сессия — это механизм хранения информации на сервере, которая связанна с конкретным посетителем сайта. Информация теряет привязку и удаляется после закрытия браузера посетителем.
$_SERVER Содержит данные, сформированные WEB-сервером. В них входят: адрес страницы, с которой пользователь пришел на ваш сайт, IP-адрес пользователя, строка идентифицирующая тип и версию его браузера.
$_ENV Эта суперглобальная переменная содержит всю административную информацию об окружении, в котором работает интерпретатор PHP. К ней может относиться: тип и версия операционной системы, информация о пользователе, версии различного программного обеспечения и т.д.
$GLOBALS Массив, содержащий значения всех переменных из глобальной области видимости. Доступ к значению переменной происходит по её имени. Допустим, ранее вы определили переменную с помощью выражения «$name=“Ruslan“;». Для получения её значения через массив $GLOBALS, сформируйте следующее выражение «$GLOBALS['name'];».

Использование и проблемы безопасности

Информация, доступная через суперглобальные переменные, зависит от настроек WEB-сервера, интерпретатора и операционной системы. Далее в учебном курсе вы встретите примеры по их использованию при загрузке файлов, обработке формы обратной связи и т.д.

Если у вас установлен локальный WEB-сервер, то вы можете самостоятельно поэкспериментировать с переменными окружения. Выведите и изучите их структуры с помощью функции var_dump().

//Выводим в браузер полную структуру
var_dump($_SERVER);
/*
* Результат:
* array(32) {
*     ["REDIRECT_STATUS"]=> string(3) "200"
*     ["HTTP_HOST"]=> string(19) "coder-booster.local"
*     ["HTTP_ACCEPT_ENCODING"]=> string(19) "gzip, deflate, sdch"
*     ["REMOTE_ADDR"]=> string(9) "127.0.0.1"
*     .... остальное содержание
* }
*/

Ниже мы приводим пример использования параметра HTTP-USER-AGENT, содержащийся в переменной $_SERVER. Он хранит строку, идентифицирующую браузер пользователя, пославшего запрос.

//Выводим информацию о браузере если она присутствует
if($_SERVER['HTTP_USER_AGENT']) {
    echo "<h1>Вы используете следующий браузер:</h1>".
    $_SERVER['HTTP_USER_AGENT'];

} else {
    echo "<h1>Мы не смогли опознать ваш браузер</h1>";
}

Важно
Необходимо внести одно, но очень важное замечание. Суперглобальные переменные содержат данные, пришедшие от пользователя. Существует фундаментальное правило - «Никогда и ни при каких условиях не доверяйте данным, пришедшим от пользователя!». Перед их использованием необходимо производить проверку и очистку.

Последние публикации