#6. 2 php web приложения Переменные сервера и заголовка HTTP-запроса

В РНР существует специальный суперглобальный массив $_SERVER, который содержит различные переменные web-сервера, которые могут быть полезны при разработке web-приложений. Например, переменная $_SERVER['PHP_SELF'] содержит имя текущего скрипта, переменная $_SERVER['REQUEST_METHOD'] содержит название метода передачи данных («GET» или «POST»), и т.п.

Наиболее употребительные серверные переменные приведены в таблице 1.

Таблица 1. Переменные web-сервера

Переменная Описание
'AUTH_TYPE' Если РНР используется вместе с web-сервером Apache в режиме модуля, переменная содержит тип аутентификации.
'DOCUMENT_ROOT' Корневой каталог web-сервера, предназначенный для хранения HTML-документов, в соответствии с его конфигурацией — т.н. корень.
'GATEWAY_INTERFACE' Версия спецификации CGI, которая поддерживается web-сервером, например 'СGI/1.1 '.
'PHP_AUTH_USER' Если РНР используется вместе с web-сервером Apache в режиме модуля, переменная содержит имя пользователя, введенное в окне аутентификации.
'PATH_TRANSLATED' Полное локальное имя файла текущего скрипта.
'PHP_AUTH_PW' Если РНР используется вместе с web-сервером Apache в режиме модуля, переменная содержит пароль пользователя, введенный в окне аутентификации.
'PHP_SELF' Путь к текущему скрипту относитепьно корня.
'QUERY_STRING' Строка запроса, переданная скрипту. Задается для метода передачи данных GЕТ, имеет вид: name1 = value1&name2 = value2...
'REMOTE_ATTR' IР-адрес удапенного попьзователя,который запросил данный скрипт.
'REMOTE_HOST' Имя узла удаленного пользователя,который запросил данный скрипт.
'REMOTE_PORT' Номер порта удаленного пользователя, который запросил данный скрипт.
'REQUEST_METHOD' Метод передачи данных, при помощи которого был загружен данный скрипт — GET, HEAD, POST или PUT.
'REQUEST_URI' URL текущего скрипта, например '/index.php'.
'SCRIPT_FILENAME' Полное абсолютное локальное имя скрипта.
'SCRIPT_NAME' Путь к текущему скрипту относительно корня.
'SERVER_ ADMIN' E-mail администратора web-сервера.
'SERVER_NAME' Имя хоста web-сервера.
'SERVER_PORT' Порт web-сервера (обычно 80).
'SERVER_PROTOCOL' Наименование и версия протокола, используемого wеЬ-сервером для обмена информацией с браузером, например, 'НТТР/1.0'.
'SERVER_SIGNATURE' Строка, содержащая версию wеЬ-сервера и название хоста, которая добавляется к автоматически генерируемым страницам.
'SERVER_SOFTWARE' Строка, идентифицирующая название и версию программного обеспечения web-сервера.

Серверные переменные могут быть весьма полезны при разработке приложений. Ниже приведен пример отображения имени текущего скрипта:

<HTML>
    <head>
        <title>Идентификация скрипта</title>
    </head>
    <body>
        <Н1>Идентификация скрипта</Н1>
        <?php
            echo "Текущий скрипт: ", $_SERVER['PHP_SELF'];
        ?>
    </body>
</HTML>

В результате выполнения будет выведена строка наподобие:

Текущий скрипт: /php/06/phpidentifier.php

Кроме элементов, перечисленных в табл. 1, массив $_SERVER содержит также информацию из заголовка HTTP-запроса. HTTP-запрос посылается web-серверу клиентом, а его заголовок содержит полезную информацию о браузере. Например, $_SERVER['HTTP_USER_AGENT'] содержит информацию o версии браузера (определению типа браузера посвящен следующий раздел главы). В табл. 2 перечислены те элементы массива $_SERVER, которые заполняются на основании заголовка HTTP-запроса. В зависимости от версии протокола и типа браузера те или иные поля в заголовке HTTP-запроса могут отсутствовать.

Таблица 2. Переменные заголовка HTTP-запроса

Переменная Поле заголовка Описание
'HTTP_ACCEPT' Accept: Перечисление через запятую MIME-кодировок типов данных, которые может обработать браузер.
'HTTP_ACCEPT_CHARSET' Accept charset: Перечисление кодировок, которые поддерживает браузер.
'HTTP_ACCEPT_ENCODING' Accept-Encoding: Способы сжатия информации, которые поддерживает браузер, например, gzip.
'HTTP_ACCEPT_LANGUAGE' Accept-Language: Обозначение языка,который может корректно отображать браузер, например en (английский) или ru (русский).
'HTTP_CONNECTION' Connection: Поле управляет соединением с web-сервером, обычно содержит значение Keep-Alive.
'HTTP_HOST' Host: Имя хоста, к которому обращается браузер.
'HTTP_REFERER' Referer: Адрес cтраницы,с которой осуществляется переход на запрошенную страницу. Заполняется браузером только в том случае, если переход осуществляется по гиперссылке (а не путем ввода адреса в соответствующее поле браузера).
'HTTP_USER_AGENT' User-Agent: Строка, идентифицирующая браузер.

Key Words for FKN + antitotal forum (CS VSU):