|
Предопределенные переменные PHP.
Любому запускаемому скрипту PHP предоставляет большое количество предопределенных
переменных. Однако, многие из этих переменных не могут быть полностью задокументированы,
поскольку они зависят от запущенного сервера, его версии и настроек, а также других
факторов. Некоторые из этих переменных не доступны, когда PHP запущен из командной строки.
Начиная с PHP 4.2.0, значение директивы register_globals по умолчанию
установлено в off (отключено). Это большое изменение в PHP. Положение
register_globals в off делает предопределенные переменные
недоступными по имени. Например, чтобы получить DOCUMENT_ROOT , вам необходимо
будет использовать $_SERVER['DOCUMENT_ROOT'] вместо $DOCUMENT_ROOT ,
или $_GET['id'] из URL http://www.somehost.ru/test.php?id=3
вместо $id , или $_ENV['HOME'] вместо $HOME .
Использование предопределенных переменных PHP через суперглобальные массивы является
предпочтительным.
Начиная с версии 4.1.0, PHP предоставляет дополнительный набор предопределенных массивов,
содержащих переменные web-сервера (если они доступны), окружения и пользовательского ввода.
Эти новые массивы являются особыми, поскольку они автоматически глобальны — то есть,
автоматически доступны в любой области видимости. По этой причине они также известны как
'суперглобальные' массивы. Заметим, что предопределенные переменные все еще доступны
через старые массивы ($HTTP_*_VARS ) . Начиная с PHP 5.0.0, старые глобальные
массивы могут быть отключены директивой register_long_arrays .
Чтобы получить полный список переменных web-сервера, окружения и РНР, определенных для
вашей конфигурации системы, достаточно выполнить следующий скрипт:
<?php
echo "<h2>Переменные окружения сервера \$_SERVER[]</h2>\n";
echo "<table border='1' cellspacing='0' cellpadding='4'>\n";
foreach($_SERVER as $index => $val)
{
echo "<tr><td>".$index."</td><td>".$val."</td></tr>\n";
}
echo "</table>\n";
echo "<h2>Глобальные переменные \$GLOBALS[]</h2>\n";
echo "<table border='1' cellspacing='0' cellpadding='4'>\n";
foreach($GLOBALS as $index => $val)
{
echo "<tr><td>".$index."</td><td>".$val."</td></tr>\n";
}
echo "</table>\n";
// и так далее ...
?>
Суперглобальные массивы.
- $GLOBALS
-
Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области
видимости скрипта. Ключами этого массива являются имена глобальны переменных.
- $_SERVER
-
Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения
текущего скрипта. Аналог старого массива
$HTTP_SERVER_VARS (который по-прежнему
доступен, но не рекомендуется).
- $_GET
-
Переменные, передаваемые скрипту через HTTP-метод
GET . Аналог старого массива
$HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).
- $_POST
-
Переменные, передаваемые скрипту через HTTP-метод
POST . Аналог старого массива
$HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).
- $_COOKIE
-
Переменные, передаваемые скрипту через HTTP
cookies . Аналог старого массива
$HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).
- $_FILES
-
Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива
$HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется).
- $_ENV
-
Переменные, передаваемые скрипту через окружение. Аналог старого массива
$HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
- $_REQUEST
-
Переменные, передаваемые скрипту через механизмы ввода
GET , POST и
COOKIE , и которым, следовательно, нельзя доверять. Наличие и порядок включения
переменных в этот массив определяется в соответствии с директивой конфигурации PHP
variables_order . Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0.
- $_SESSION
-
Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива
$HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется).
|
|