- Суперглобальная переменная $_SERVER
- Пример
- Параметры сервера
- Параметры соединения
- Пути на сервере
- Авторизация на .htpasswd
- HTTPS
- URL
- Заголовки браузера
- Дамп переменной $_SERVER
- Массив $_SERVER
- Параметры сервера
- Параметры соединения
- Пути на сервере
- Авторизация на .htpasswd
- HTTPS
- URL
- Заголовки браузера
- Дамп переменной $ _SERVER
Суперглобальная переменная $_SERVER
Переменная $_SERVER — это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером.
Рассмотрим на примере как использовать суперглобальную переменную $_SERVER:
Пример
"; echo $_SERVER['SERVER_NAME']; echo "
"; echo $_SERVER['HTTP_HOST']; echo "
"; echo $_SERVER['HTTP_REFERER']; echo "
"; echo $_SERVER['HTTP_USER_AGENT']; echo "
"; echo $_SERVER['SCRIPT_NAME']; ?>
В приведенном выше коде мы использовали элементы $_SERVER для получения некоторой информации. Получаем имя текущего файла, над которым мы работаем с помощью элемента PHP_SELF . Затем получаем имя сервера, используемое в настоящее время с использованием элемента SERVER_NAME . А затем получаем имя хоста через HTTP_HOST . HTTP_REFERER — адрес страницы (если есть), с которой браузер пользователя перешёл на эту страницу.
Рассмотрим описание значений глобального массива $_SERVER с примерами.
Параметры сервера
Элемент | Описание |
---|---|
$_SERVER[‘SERVER_NAME’] | Имя хоста, обычно совпадает с доменом (например, wm-school.ru) |
$_SERVER[‘GATEWAY_INTERFACE’] | Версия Common Gateway Interface (CGI), которую использует сервер (CGI/1.1) |
$_SERVER[‘SERVER_SOFTWARE’] | Название и версия сервера (Apache/2.4.7) |
$_SERVER[‘SERVER_SIGNATURE’] | Версия сервера и имя виртуального хоста, обычно пуста |
$_SERVER[‘SERVER_PROTOCOL’] | Имя и версия используемого HTTP протокола (HTTP/1.1) |
$_SERVER[‘SERVER_ADDR’] | IP-адрес сервера (127.0.0.1) |
$_SERVER[‘SERVER_PORT’] | Порт сервера (80) |
$_SERVER[‘SERVER_ADMIN’] | Значение из директивы конфигурационного файла Apache. На хостингах указывают контактный e-mail. |
Параметры соединения
Элемент | Описание |
---|---|
$_SERVER[‘HTTP_HOST’] | Имя сервера, как правило, совпадает с доменом (например, wm-school.ru) |
$_SERVER[‘HTTP_PORT’] | Порт подключения (80) |
$_SERVER[‘REMOTE_ADDR’] | IP-адрес, с которого пользователь просматривает текущую страницу (64.246.37.238) |
$_SERVER[‘REMOTE_HOST’] | Удаленный хост, с которого пользователь просматривает текущую страницу |
$_SERVER[‘REMOTE_PORT’] | Порт на удаленной машине, который используется для связи с веб-сервером |
$_SERVER[‘REQUEST_SCHEME’] | Схема запроса (http) |
$_SERVER[‘REQUEST_METHOD’] | Метод запроса к странице (GET, POST, PUT) |
$_SERVER[‘REQUEST_TIME’] | Время запроса к серверу в Unix timestamp (1537962596) |
$_SERVER[‘REQUEST_TIME_FLOAT’] | Время запроса к серверу с точностью до микросекунд (1537962596.892) |
Пути на сервере
Элемент | Описание |
---|---|
$_SERVER[‘DOCUMENT_ROOT’] | Директория корня сайта, в которой выполняется текущий скрипт (например, /wm-school.ru/scripts) |
$_SERVER[‘CONTEXT_DOCUMENT_ROOT’] | Появился в Apache2, то же самое что и DOCUMENT_ROOT |
$_SERVER[‘PATH_INFO’] | Содержит путь, содержащийся после имени скрипта (Например для адреса https://wm-school.ru/index.php/123 значение будет следующим: /123) |
$_SERVER[‘ORIG_PATH_INFO’] | Исходное значение переменной PATH_INFO перед обработкой PHP |
$_SERVER[‘SCRIPT_NAME’] | Путь и имя выполняемого скрипта (/index.php) |
$_SERVER[‘PHP_SELF’] | Путь к исполняемому скрипту относительно корня сайта, обычно равен SCRIPT_NAME (/index.php) |
$_SERVER[‘SCRIPT_FILENAME’] | Абсолютный путь к исполняемому скрипту (/wm-school.ru/public_html/index.php) |
$_SERVER[‘PATH’] | /usr/local/bin:/usr/bin:/bin |
Авторизация на .htpasswd
Элемент | Описание |
---|---|
$_SERVER[‘AUTH_TYPE’] | Метод HTTP аутентификации (например, Basic) |
$_SERVER[‘REMOTE_USER’] и $_SERVER[‘PHP_AUTH_USER’] | Логин пользователя |
$_SERVER[‘PHP_AUTH_PW’] | Пароль |
HTTPS
Данные переменные появляются при HTTPS соединении:
$_SERVER[‘HTTPS’], $_SERVER[‘HTTP_X_HTTPS’], $_SERVER[‘REDIRECT_HTTPS’]
URL
Значения в примерах приведены для адреса https://wm-school.ru/index.php?page=1&exercise=2
Заголовки браузера
Элемент | Описание |
---|---|
$_SERVER[‘HTTP_USER_AGENT’] | Браузер и операционную система, открышие данную страницу (например, Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36) |
$_SERVER[‘HTTP_COOKIE’] | Куки браузера в виде строки: ключ=значение; ключ=значение;. Данные доступны в переменной $_COOKIE (_ym_uid=xxx; _ym_d=xxx; PHPSESSID=xxx;) |
$_SERVER[‘HTTP_REFERER’] | Адрес страницы, с которой браузер пользователя перешёл на текущую страницу (https://wm-school.ru/index.php) |
$_SERVER[‘HTTP_ACCEPT’] | Содержимое заголовка Accept из текущего запроса (text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, */*; q=0.8) |
$_SERVER[‘HTTP_ACCEPT_ENCODING’] | HTTP заголовок переданный клиентом, говорящий о том какие алгоритмы сжатия он может понять (gzip, deflate) |
$_SERVER[‘HTTP_ACCEPT_LANGUAGE’] | Содержимое заголовка Accept-Language (ru-RU,ru; q=0.9,en-US; q=0.8,en; q=0.7) |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | Предпочтения клиента относительно кодировки (utf-8, iso-8859-1) |
$_SERVER[‘HTTP_CACHE_CONTROL’] | max-age=0 |
$_SERVER[‘HTTP_UPGRADE_ INSECURE_REQUESTS’] | Браузер отправляет этот заголовок со значением 1, выражающий предпочтение клиента для зашифрованного ответа |
Дамп переменной $_SERVER
Для тестирования, значения массива $_SERVER для разных клиентов можно скидывать в лог-файл:
file_put_contents(__DIR__ . '/server.log', print_r($_SERVER, true) . PHP_EOL, FILE_APPEND);
Массив $_SERVER
Описание значений глобального массива $_SERVER с примерами.
Параметры сервера
Имя хоста, обычно совпадает с доменом.
Название и версия сервера.
Версия сервера и имя виртуального хоста, обычно пуста.
Имя и версия используемого HTTP протокола.
Значение из директивы конфигурационного файла Apache.
На хостингах указывают контактный e-mail.
Параметры соединения
Имя сервера, как правило, совпадает с доменом.
IP-адрес, с которого пользователь просматривает текущую страницу.
64.246.37.238 fe80:0:0:0:200:f8ff:fe21:67cf
Удаленный хост, с которого пользователь просматривает текущую страницу.
Порт на удаленной машине, который используется для связи с веб-сервером.
Время запроса к серверу в Unix timestamp.
Время запроса к серверу с точностью до микросекунд.
Пути на сервере
Директория корня сайта, в которой выполняется текущий скрипт.
/home/example.com/public_html
Появился в Apache2, то же самое что и DOCUMENT_ROOT .
Содержит путь, содержащийся после имени скрипта.
Например для адреса http://site.ru/index.php/123 значение будет следующим:
Исходное значение переменной PATH_INFO перед обработкой PHP.
Путь и имя выполняемого скрипта.
Путь к исполняемому скрипту относительно корня сайта, обычно равен SCRIPT_NAME .
Абсолютный путь к исполняемому скрипту.
/home/example.com/public_html/index.php
Авторизация на .htpasswd
Метод HTTP аутентификации.
$_SERVER[‘REMOTE_USER’] и $_SERVER[‘PHP_AUTH_USER’]
HTTPS
$_SERVER[‘HTTPS’] , $_SERVER[‘HTTP_X_HTTPS’] , $_SERVER[‘REDIRECT_HTTPS’]
URL
Значения в примерах приведены для адреса http://site.ru/index.php?page=1&sort=2
URI страницы с GET-параметрами, без домена.
Количество элементов массива $_SERVER[‘argv’] .
Содержит URL страницы без GET-параметров и домена.
Заголовки браузера
Строка, обозначающая браузер и операционную систему, который открыл данную страницу.
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Куки браузера в виде строки: ключ=значение; ключ=значение;.
Данные доступны в переменной $_COOKIE .
_ym_uid=xxx; _ym_d=xxx; PHPSESSID=xxx;
Адрес страницы, с которой браузер пользователя перешёл на текущую страницу.
Содержимое заголовка Accept из текущего запроса.
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
HTTP заголовок переданный клиентом, говорящий о том какие алгоритмы сжатия он может понять.
Содержимое заголовка Accept-Language .
Предпочтения клиента относительно кодировки.
Значение заголовка Connection .
Браузер отправляет этот заголовок со значением 1 , выражающий предпочтение клиента для зашифрованного ответа.
Дамп переменной $ _SERVER
Для тестирования, значения массива $ _SERVER для разных клиентов можно скидывать в лог-файл:
file_put_contents(__DIR__ . '/server.log', print_r($_SERVER, true) . PHP_EOL, FILE_APPEND);