Учебник PHP

         

Предопределённые переменные

Серверные переменные: $_SERVER

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_SERVER_VARS.

$_SERVER это массив, содержащий такую информацию, как headers/шапки, paths/пути и размещение скриптов. Вхождения в этом массиве создаются web-сервером. Нет гарантии, что каждый web-сервер будет предоставлять что-нибудь из этого; сервер может опустить позиции, указанные здесь, или добавить новые, здесь не указанные. Насчитывается большое количество этих переменных для спецификации CGI 1.1, поэтому вы должны это учитывать.

Это 'суперглобальная', или автоматическая, переменная. Это просто означает, что она доступна во всех областях видимости в скрипте. Вы не должны вводить global $_SERVER; для доступа к ней внутри функций или методов, как это делается с $HTTP_SERVER_VARS.

$HTTP_SERVER_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_SERVER_VARS и $_SERVER это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также станут доступны в глобальной области видимости скрипта; т.е. независимо от массивов $_SERVER и $HTTP_SERVER_VARS. Дополнительно см. главу о безопасности Использование Register_Globals.


Эти отдельные глобалы не являются автоглобалами.

Вы можете или можете не найти следующие переменные элементы в $_SERVER. Обратите внимание, что лишь некоторые (если вообще какие-нибудь) из этих элементов будут доступны (или будут иметь иное значение) при запуске PHP из командной строки.

'PHP_SELF'

Имя файла исполняемого в данный момент скрипта; относительно document root. Например, $_SERVER['PHP_SELF'] в скрипте с адресом http://example.com/test.php/foo.bar даст /test.php/foo.bar.

Если PHP запущен как процессор командной строки, эта переменная недоступна.

'argv'

Массив аргументов, передаваемых скрипту. Если скрипт работает из командной строки, это даёт доступ, в стиле С, к параметрам командной строки. Если вызывается через метод GET, будет содержать строку запроса.

'argc'

Содержит количество параметров командной строки, передаваемых скрипту (если запущен из командной строки).

'GATEWAY_INTERFACE'

Какой вариант спецификации CGI используется сервером; например, 'CGI/1.1'.

'SERVER_NAME'

Имя хоста сервера, на котором текущий скрипт выполняется. Если скрипт запущен на виртуальном хосте, это будет значение, определённое для данного виртуального хоста.

'SERVER_SOFTWARE'

Строка-идентификатор сервера, даваемая в шапках/headers при ответах на запросы.

'SERVER_PROTOCOL'

Имя и версия информационного протокола, по которому страница запрошена; например, 'HTTP/1.0';

'REQUEST_METHOD'

Какой метод запроса был использован для доступа к странице; например, 'GET', 'HEAD', 'POST', 'PUT'.

'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() для приспособления вывода вашей страницы к возможностям ПАгента.

'REMOTE_ADDR'

IP-адрес, с которого пользователь просматривает текущую страницу.

'REMOTE_PORT'

Порт на пользовательской машине для соединения с web-сервером.

'SCRIPT_FILENAME'

Абсолютный путь к файлу исполняемого в данный момент скрипта.

'SERVER_ADMIN'

Значение, данное в директиве SERVER_ADMIN (для Apache) в файле конфигурации web-сервера. Если скрипт запущен на виртуальном хосте, это будет значение, определённое для данного виртуального хоста.

'SERVER_PORT'

Порт на серверной машине, используемый web-сервером для соединения. По умолчанию это '80'; использование SSL, к примеру, изменит это значение на то, которое вы определили для секретного порта HTTP.

'SERVER_SIGNATURE'

Строка, содержащая версию сервера и имя виртуального хоста, добавленная к генерируемым сервером страницам, если эта возможность включена.

'PATH_TRANSLATED'

Путь файловой системы (не document root) к текущему скрипту, после того как сервер выполнил отображение virtual-to-real.

'SCRIPT_NAME'

Путь к текущему скрипту. Это используется в страницах, которым нужно указывать на самих себя.

'REQUEST_URI'

URI, который был задан для доступа к данной странице; например, '/index.html'.

'PHP_AUTH_USER'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается username, предоставляемое пользователем.

'PHP_AUTH_PW'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается password, предоставляемый пользователем.

'PHP_AUTH_TYPE'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается тип аутентификации.

Переменные окружения: $_ENV

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_ENV_VARS.

Эти переменные импортируются в глобальное пространство имён PHP из окружения, в котором запущен разборщик (интерпретатор) PHP. Многие предоставляются оболочкой, под которой PHP работает, а разные системы запускают, очевидно, разные виды оболочек, поэтому создать какой-то определённый список невозможно. Просмотрите в документации вашей оболочки список определённых переменных окружения.

Другие переменные окружения - это CGI-переменные, помещаемые сюда независимо от того, запущен PHP как серверный модуль или как CGI-процессор.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_ENV; для доступа к ней в функциях или методах, как вы делаете с $HTTP_ENV_VARS.

$HTTP_ENV_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_ENV_VARS и $_ENV это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_ENV и $HTTP_ENV_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP-Куки: $_COOKIE

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_COOKIE_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через HTTP-куки. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_COOKIE; для доступа к ней в функциях или методах, как вы делаете с $HTTP_COOKIE_VARS.

$HTTP_COOKIE_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_COOKIE_VARS и $_COOKIE это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_COOKIE и $HTTP_COOKIE_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP GET-Переменные: $_GET

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_GET_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через метод HTTP GET. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_GET; для доступа к ней в функциях или методах, как вы делаете с $HTTP_GET_VARS.

$HTTP_GET_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_GET_VARS и $_GET это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_GET и $HTTP_GET_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP POST-Переменные: $_POST

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_POST_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через метод HTTP POST. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_POST; для доступа к ней в функциях или методах, как вы делаете с $HTTP_POST_VARS.

$HTTP_POST_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_POST_VARS и $_POST это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_POST и $HTTP_POST_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные HTTP-загрузки файлов: $_FILES

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_POST_FILES.

Ассоциативный массив элементов, загружаемых в текущий скрипт методом HTTP POST. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_FILES; для доступа к ней в функциях или методах, как вы делаете с $HTTP_POST_FILES.

$HTTP_POST_FILES содержит ту же самую информацию, но не является автоглобалом.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_FILES и $HTTP_POST_FILES. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные запроса: $_REQUEST

Примечание: введены в версии 4.1.0. В предыдущих версиях эквивалентного массива нет.

Ассоциативный массив, состоящий из содержимого $_GET, $_POST, $_COOKIE и $_FILES.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_REQUEST; для доступа к ней в функциях или методах.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массива $_REQUEST. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные сессии: $_SESSION

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_SESSION_VARS.

Ассоциативный массив, содержащий переменные сессии, доступные текущему скрипту. См. также Функции сессий.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_SESSION; для доступа к ней в функциях или методах, как вы делаете с $HTTP_SESSION_VARS.

$HTTP_SESSION_VARS содержит ту же самую информацию, но не является автоглобалом.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_SESSION и $HTTP_SESSION_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Глобальные переменные: $GLOBALS

Примечание: $GLOBALS доступны начиная с PHP 3.0.0.

Ассоциативный массив, содержащий ссылки на все переменные, которые определены в данный момент в глобальной области видимости скрипта. Имена переменных являются ключами в массиве.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $GLOBALS; для доступа к ней в функциях или методах.

Предыдущее сообщение об ошибке: $php_errormsg

$php_errormsg это переменная, содержащая текст последнего сообщения об ошибке, сгенерированной PHP. Эта переменная доступна только в той области видимости, в которой ошибка возникла, и только если опция конфигурации track_errors включена/on (по умолчанию она - off).

Содержание раздела