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

Опубликовал: Wednesday, March 14, 2024 в категории HTML | Пока нет комментариев

Создадим сценарий, состоящий всего из трех строк:

<?php

$var = 10;

?>

А теперь вопрос. Сколько переменных доступно сценарию? Думаете, одна

$var? Давайте перепишем нашу программу и добавим одну строчку:

<?php

$var = 10;

echo $_SERVER[‘DOCUMENT_ROOT’];

?>

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

C:/Apache2/htdocs

Откуда же взялась переменная $_SERVER[‘DOCUMENT_ROOT’]? Ведь мы ее не создавали! Ответ на этот вопрос достаточно прост — эта переменная была автоматически создана сервером. Такая переменная называется переменной окружения.

5.23.1. Массив $GLOBALS

Если директива register_globals имеет значение On, то все переменные ок- ружения доступны через массив $GLOBALS. При настройке PHP мы отключили эту директиву, по этой причине переменные окружения попадут в указанный массив, только если они окажутся в глобальной области видимости. Чтобы увидеть основные переменные окружения, воспользуемся функцией print_r():

<?php

// Присваиваем значение, чтобы $_SERVER попал

// в глобальную область видимости

$var = $_SERVER[‘DOCUMENT_ROOT’];

echo "<pre>"; print_r($GLOBALS); echo "</pre>";

?>

В итоге получим результат, показанный в листинге 5.38.

Листинг 5.38. Массив $GLOBALS

Array

(

[GLOBALS] => Array

*RECURSION*

[_POST] => Array

(

)

[_GET] => Array

(

)

[_COOKIE] => Array

(

)

[_FILES] => Array

(

)

[_SERVER] => Array

(

[HTTP_USER_AGENT] => Opera/9.02 (Windows NT 5.1; U; ru) [HTTP_HOST] => localhost

[HTTP_ACCEPT] => text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,

*/*;q=0.1

[HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.9,en;q=0.8 [HTTP_ACCEPT_CHARSET] => iso-8859-1, utf-8, utf-16, *;q=0.1 [HTTP_ACCEPT_ENCODING] => deflate, gzip, x-gzip, identity,

*;q=0

[HTTP_CACHE_CONTROL] => no-cache

[HTTP_CONNECTION] => Keep-Alive, TE

[HTTP_TE] => deflate, gzip, chunked, identity, trailers [PATH] => C:\php5;C:\WINDOWS\system32;C:\WINDOWS [SystemRoot] => C:\WINDOWS

[COMSPEC] => C:\WINDOWS\system32\cmd.exe

[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH [WINDIR] => C:\WINDOWS

[SERVER_SIGNATURE] => <address>Apache/2.2.14 (Win32) PHP/5.3.0 Server at localhost Port 80</address>

[SERVER_SOFTWARE] => Apache/2.2.14 (Win32) PHP/5.3.0 [SERVER_NAME] => localhost

[SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80

[REMOTE_ADDR] => 127.0.0.1 [DOCUMENT_ROOT] => C:/Apache2/htdocs [SERVER_ADMIN] => [email protected] [SCRIPT_FILENAME] => C:/Apache2/htdocs/test.php [REMOTE_PORT] => 2035

[GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] =>

[REQUEST_URI] => /test.php [SCRIPT_NAME] => /test.php [PHP_SELF] => /test.php [REQUEST_TIME] => 1258090142

)

[var] => C:/Apache2/htdocs

)

Все, что заключено в квадратные скобки, — это и есть переменные окруже- ния. Если после имени переменной стоит слово Array, то эта переменная в свою очередь является массивом.

Перечислим суперглобальные массивы:

? $_SERVER — массив переменных среды сервера;

? $_FILES — массив переменных, определяющих отправленные через фор-

му файлы;

? $_POST — массив переменных, переданных посредством метода POST;

? $_GET — массив переменных, переданных посредством метода GET;

? $_COOKIE — массив cookies-переменных;

? $_ENV — массив переменных, определяющих конфигурацию среды;

? $_REQUEST — массив всех переменных, вводимых пользователем. В PHP 5.3

этот массив зависит от значения директивы request_order.

В отличие от глобальных переменных суперглобальные массивы видны не только в сценарии, но и внутри функций.

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *