$HTTP_SERVER_VARS [удалено]
Переменная $_SERVER — это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером. Нет гарантии, что каждый веб-сервер предоставит любую из них; сервер может опустить некоторые из них или предоставить другие, не указанные здесь. Тем не менее, многие эти переменные присутствуют в » спецификации CGI/1.1, так что вы можете их ожидать их реализации и в конкретном веб-сервере.
Переменная $HTTP_SERVER_VARS содержит ту же начальную информацию, но она не суперглобальная. (Заметьте, что $HTTP_SERVER_VARS и $_SERVER являются разными переменными, так что PHP обрабатывает их соответственно). Также учтите, что «длинные массивы» были удалены в версии PHP 5.4.0, поэтому $HTTP_SERVER_VARS больше не существует.
Индексы
Вы можете найти (а можете и не найти) любой из следующих элементов в массиве $_SERVER . Заметьте, что немногие элементы, если вообще такие найдутся, будут доступны (или действительно будут иметь значение), если PHP запущен в командной строке.
‘ PHP_SELF ‘ Имя файла скрипта, который сейчас выполняется, относительно корня документов. Например, $_SERVER[‘PHP_SELF’] в скрипте по адресу http://example.com/foo/bar.php будет /foo/bar.php . Константа __FILE__ содержит полный путь и имя файла текущего (то есть подключенного) файла. Если PHP запущен в командной строке, эта переменная содержит имя скрипта, начиная с PHP 4.3.0. Раньше она была недоступна. ‘argv’ Массив аргументов, переданных скрипту. Когда скрипт запущен в командой строке, это дает C-подобный доступ к параметрам командной строки. Когда вызывается через метод GET, этот массив будет содержать строку запроса. ‘argc’ Содержит количество параметров, переданных скрипту (если запуск произведен в командной строке). ‘ GATEWAY_INTERFACE ‘ Содержит используемую сервером версию спецификации CGI; к примеру’CGI/1.1‘. ‘ SERVER_ADDR ‘ IP адрес сервера, на котором выполняется текущий скрипт. ‘ SERVER_NAME ‘ Имя хоста, на котором выполняется текущий скрипт. Если скрипт выполняется на виртуальном хосте, здесь будет содержатся имя, определенное для этого виртуального хоста. ‘ SERVER_SOFTWARE ‘ Строка идентификации сервера, указанная в заголовках, когда происходит ответ на запрос. ‘ SERVER_PROTOCOL ‘ Имя и версия информационного протокола, через который была запрошена страница; к примеру ‘HTTP/1.0‘; ‘ REQUEST_METHOD ‘ Какой метод был использован для запроса страницы; к примеру ‘GET‘, ‘HEAD‘, ‘POST‘, ‘PUT‘.
Замечание:
PHP скрипт завершается после посылки заголовков (то есть после того, как осуществляет любой вывод без буферизации вывода), если запрос был осуществлен методом HEAD.
‘ REQUEST_TIME ‘ Временная метка начала запроса. Доступна, начиная с PHP 5.1.0. ‘ REQUEST_TIME_FLOAT ‘ Временная метка начала запроса с точностью до микросекунд. Доступна, начиная с PHP 5.4.0. ‘ QUERY_STRING ‘ Строка запросов, если есть, с помощью которой была получена страница. ‘ DOCUMENT_ROOT ‘ Директория корня документов, в которой выполняется текущий скрипт, в точности та, которая указана в конфигурационном файле сервера. ‘ HTTP_ACCEPT ‘ Содержимое заголовка Accept: из текущего запроса, если он есть. ‘ HTTP_ACCEPT_CHARSET ‘ Содержимое заголовка Accept-Charset: из текущего запроса, если он есть. Например: ‘iso-8859-1,*,utf-8‘. ‘ HTTP_ACCEPT_ENCODING ‘ Содержимое заголовка Accept-Encoding: из текущего запроса, если он есть. Например: ‘gzip‘. ‘ HTTP_ACCEPT_LANGUAGE ‘ Содержимое заголовка Accept-Language: из текущего запроса, если он есть. Например: ‘en‘. ‘ HTTP_CONNECTION ‘ Содержимое заголовка Connection: из текущего запроса, если он есть. Например: ‘Keep-Alive‘. ‘ HTTP_HOST ‘ Содержимое заголовка Host: из текущего запроса, если он есть. ‘ HTTP_REFERER ‘ Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER . Одним словом, в самом деле ему нельзя доверять. ‘ HTTP_USER_AGENT ‘ Содержимое заголовка User-Agent: из текущего запроса, если он есть. Эта строка содержит обозначение браузера, которым пользователь запросил данную страницу. Типичным примером является строка: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) . Среди прочего, вы можете использовать это значение с функцией get_browser() чтобы адаптировать вывод вашей страницы к возможностям браузера пользователя ‘ HTTPS ‘ Принимает непустое значение, если запрос был произведен через протокол HTTPS.
Замечание: Обратите внимание, что при использовании ISAPI с IIS значение будет off, если запрос не был произведен через протокол HTTPS.
‘ REMOTE_ADDR ‘ IP-адрес, с которого пользователь просматривает текущую страницу. ‘ REMOTE_HOST ‘ Удаленный хост, с которого пользователь просматривает текущую страницу. Обратный просмотр DNS базируется на значении переменной REMOTE_ADDR .
Замечание: Ваш веб-сервер должен быть настроен, чтобы создавать эту переменную. Для примера, в Apache вам необходимо присутствие директивы HostnameLookups On в файле httpd.conf , чтобы эта переменная создавалась. См. также gethostbyaddr() .
‘ REMOTE_PORT ‘ Порт на удаленной машине, который используется для связи с веб-сервером. ‘ REMOTE_USER ‘ Аутентифицированный пользователь. ‘ REDIRECT_REMOTE_USER ‘ Аутентифицированный пользователь, если запрос был перенаправлен изнутри. ‘ SCRIPT_FILENAME ‘
Абсолютный путь к скрипту, который в данный момент исполняется.
Замечание:
Если скрипт запускается в командной строке (CLI), используя относительный путь, такой как file.php или ../file.php , переменная $_SERVER[‘SCRIPT_FILENAME’] будет содержать относительный путь, указанный пользователем.
‘ SERVER_ADMIN ‘ Эта переменная получает свое значение (для Apache) из директивы конфигурационного файла сервера. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для данного виртуального хоста. ‘ SERVER_PORT ‘ Порт на компьютере сервера, используемый веб-сервером для соединения. Для установок по умолчанию, значение будет ‘80‘; используя SLL, например, это значение будет таким, какое сконфигурировано для соединений безопасного HTTP.
Замечание: Чтобы получить физический (реальный) порт в Apache 2, необходимо установить UseCanonicalName = On и UseCanonicalPhysicalPort = On, иначе это значение может быть подменено и не вернуть реальной значение физического порта. Полагаться на это значение небезопасно в контексте приложений, требующих усиленной безопасности.
‘ SERVER_SIGNATURE ‘ Строка, содержащая версию сервера и имя виртуального хоста, которые добавляются к генерируемым сервером страницам, если включено. ‘ PATH_TRANSLATED ‘ Filesystem- (not document root-) based path to the current script, after the server has done any virtual-to-real mapping.
Замечание: Начиная с PHP 4.3.2, переменная PATH_TRANSLATED больше не устанавливается неявно в Apache 2 SAPI , по сравнению с Apache версии 1, где она устанавливается в то же самое значение, что и переменная SCRIPT_FILENAME , когда она не используется Apache. Это изменение было сделано для соответствия спецификации CGI , где переменная PATH_TRANSLATED должна существовать только тогда, когда PATH_INFO определена. Пользователи Apache 2 могут использовать директиву AcceptPathInfo = On в конфигурационном файле httpd.conf для задания переменной PATH_INFO .
‘ SCRIPT_NAME ‘ Содержит путь, к текущему исполняемому скрипту. Это полезно для страниц, которые должны указывать на самих себя. Константа __FILE__ содержит полный путь и имя текущего (т.е. включаемого) файла. ‘ REQUEST_URI ‘ URI, который был передан для того, чтобы получить доступ к этой странице. Например, ‘/index.html‘. ‘ PHP_AUTH_DIGEST ‘ При выполнении HTTP Digest аутентификации, этой переменной присваивается заголовок ‘Authorization’, который присылается клиентом (его необходимо потом использовать для соответствующей валидации). ‘ PHP_AUTH_USER ‘ Когда выполняется HTTP-аутентификация, этой переменной присваивается имя пользователя, предоставленное пользователем. ‘ PHP_AUTH_PW ‘ Когда выполняется HTTP-аутентификация, этой переменной присваивается пароль, предоставленный пользователем. ‘ AUTH_TYPE ‘ Когда выполняется HTTP-аутентификация, этой переменной присваивается тип аутентификации, который используется. ‘ PATH_INFO ‘ Содержит любой предоставленный пользователем путь, содержащийся после имени скрипта, но до строки запроса, если доступно. Например, если текущий скрипт запрошен по URL http://www.example.com/php/path_info.php/some/stuff?foo=bar , то переменная $_SERVER[‘PATH_INFO’] будет содержать /some/stuff. ‘ ORIG_PATH_INFO ‘ Исходное значение переменной ‘ PATH_INFO ‘ до начала обработки PHP.
Список изменений
Версия | Описание |
---|---|
5.4.0 | Массив $HTTP_SERVER_VARS больше не доступен в связи с удалением «длинных массивов». |
5.3.0 | Директива register_long_arrays, которая приводила к заполнению $HTTP_SERVER_VARS помечена как устаревшая. |
4.1.0 | Введена переменная $_SERVER вместо старой $HTTP_SERVER_VARS . |
Отправка данных на сервер
Самым простым способом передачи данных на сервер приложению PHP извне представляет передача данных через строку запроса.
Строка запроса представляет набор параметров, которые помещаются в адресе после вопросительного знака. При этом каждый параметр определяет название и значение. Например, в адресе:
http://localhost/user.php?name=Tom&age=36
Часть ?name=Tom&age=36 представляет строку запроса, в которой есть два параметра name и age . Для каждого параметра определено имя и значение, которые отделяются знаком равно. Параметр name имеет значение «Tom», а параметр age — значение 36. Друг от друга параметры отделяются знаком амперсанда.
Например, определим следующий скрипт user.php со следующим содержимым:
if(isset($_GET["age"])) < $age = $_GET["age"]; >echo "Имя: $name
Возраст: $age"; ?>
Когда мы вводим в адресную строку браузера некий адрес и нажимаем на оправку, то серверу отправляется запрос типа GET . В PHP по умолчанию определен глобальный ассоциативный массив $_GET , который хранит все значения, передаваемые в запроса GET. Используя ключи передаваемых данных, мы можем из массива $_GET получить передаваемые значения.
При отправки строки запроса ключами в этом массиве будут названия параметров, а значениями — значения параметров.
Например, в строке запроса передается параметр name=Tom . Соответственно, чтобы получить значение параметра name из запроса, обращаемся по соответствующему ключу:
Однако стоит учитывать, что в адресной строке необязательно будет использоваться строка запроса или конкретно данный параметр. Поэтому перед получением значения параметра сначала смотрим, а передан ли вообще такой параметр:
Теперь обратимся к этому скрипту, например, так http://localhost/user.php?name=Tom&age=36 :