Предварително-дефинирани променливи
PHP Manual

$_SERVER

$HTTP_SERVER_VARS [непрепоръчителна]

$_SERVER -- $HTTP_SERVER_VARS [непрепоръчителна]Информация от обкръжението на сървъра и изпълнението

Описание

$_SERVER е масив, съдържащ информация като заглавки, пътеки за достъп и местоположения на скриптове. Елементите в този масив се създават от уеб сървъра. Няма гаранция, че всеки уеб сървър ще предостави който и да е от тях; сървърите може да пропуснат някои, или да предоставят други, които не са описани тук. Имайки предвид това, все пак голям набор от тези променливи са описани в » спецификация CGI 1.1, така че би трябвало да очаквате тяхното наличие.

$HTTP_SERVER_VARS съдържа същата начална информация, но не е свръхглобална. (Забележете, че $HTTP_SERVER_VARS и $_SERVER са две различни променливи и PHP ги третира като такива)

Индекси

Ще можете (или пък няма да можете) да намерите някой от следните елементи на $_SERVER. Забележете, че малка част, ако изобщо има някой от тези, ще бъдат налични (или ще имат изобщо смисъл) ако пускате PHP от командния ред.

'PHP_SELF'
Името на файла на текущо изпълнявания скрипт, относително спрямо коренната директория за документи (document root). Например $_SERVER['PHP_SELF'] в скрипт с адрес http://example.com/test.php/foo.bar ще бъде /test.php/foo.bar. Константата __FILE__ съдържа пълния път и име на файл на текущия (т.е. включения) файл. Ако PHP работи като процесор на командния ред, от PHP 4.3.0 тази променлива съдържа името на скрипта. Преди това не беше налична.
'argv'
Масив с аргументите, подадени към скрипта. Когато скриптът е пуснат от командния ред, това дава достъп в стил C към параметрите на командния ред. Когато е извикан посредством метода GET, тя ще съдържа заявковия низ (query string).
'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'.

Забележка: Скриптът се прекратява след изпращане на заглавките (с други думи - след извеждане на нещо без буфериране на изхода), ако заявковият метод е бил HEAD.

'REQUEST_TIME'
Времевия отпечатък на началото на заявката. Наличен от PHP 5.1.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'
Името на Host, от който потребителят разглежда текущата страница. Обратното dns търсене се основава на REMOTE_ADDR на потребителя.

Забележка: Вашият уеб сървър трябва да бъде допълнително конфигуриран, за да създаде тази променлива. Например в Apache ще ви трябва HostnameLookups On в httpd.conf, за да я има. Вж. също gethostbyaddr().

'REMOTE_PORT'
Портът, използван на потребителския компютър, за свръзка с уеб сървъра.
'SCRIPT_FILENAME'

Абсолютния файлов път на текущо-изпълнявания скрипт.

Забележка: Ако скриптът се изпълнява посредством CLI, като относителен път, като file.php или ../file.php, $_SERVER['SCRIPT_FILENAME'] ще съдържа относителния път, зададен от потребителя.

'SERVER_ADMIN'
Стойността, указана в директивата SERVER_ADMIN (за Apache) в конфигурационния файл на уеб сървъра. Ако скриптът върви на виртуален хост, това ще бъде стойността, дефинирана за съответния виртуален хост.
'SERVER_PORT'
Портът на сървърния компютър, използван от уеб сървъра за свръзка. По подразбиране това ще бъде '80'; употребата на SSL, например, ще промени това на порта, който сте дефинирали за HTTPS.
'SERVER_SIGNATURE'
Низ, съдържащ версията на сървъра и името на виртуалния хост, които се добавят към сървърно-генерираните страници, ако е включен.
'PATH_TRANSLATED'
Файлов път, основаващ се на файловата система (а не на директорията за документи), до текущия скрипт, след като сървърът е извършил всички виртуални-към-реални преобразувания.

Забележка: От PHP 4.3.2 PATH_TRANSLATED вече не се попълва безусловно при Apache 2 SAPI, за разлика от ситуацията при Apache 1, където се попълва със стойността на сървърната променлива SCRIPT_FILENAME. Тази промяна бе направена, с цел придържане към спецификацията CGI, според която PATH_TRANSLATED трябва да съществува единствено ако PATH_INFO е дефинирана. Потребителите на Apache 2 могат да използват AcceptPathInfo = On в httpd.conf, за да дефинират PATH_INFO.

'SCRIPT_NAME'
Съдържа файловия път на текущия скрипт. Това е удобно за страници, които трябва да сочат към себе си. Константата __FILE__ съдържа пълния файлов път и име на файл на текущия (включен) файл.
'REQUEST_URI'
Идентификаторът URI, който е бил подаден за осъществяване на достъп до тази страница; например, '/index.html'.
'PHP_AUTH_DIGEST'
При работа под Apache като модул, извършващ автентикация от тип Digest HTTP, тази променлива се попълва от заявката 'Authorization', подадена от клиента (която трябва да използвате след това, за да направите подходящата проверка за валидност).
'PHP_AUTH_USER'
При работа под Apache или IIS (ISAPI при PHP 5) като модул, извършващ автентикация от тип HTTP, тази променлива се попълва с потребителското име (username), предоставено от потребителя.
'PHP_AUTH_PW'
При работа под Apache или IIS (ISAPI при PHP 5) като модул, извършващ автентикация от тип HTTP, тази променлива се попълва с паролата, предоставена от потребителя.
'AUTH_TYPE'
При работа под Apache като модул, извършващ автентикация от тип HTTP, тази променлива се установява с автентикационния тип.

Дневник на промените

Версия Описание
4.1.0 Въвеждане на $_SERVER, за сметка на непрепоръчителната $HTTP_SERVER_VARS.

Примери

Example #1 Пример със $_SERVER

<?php
echo $_SERVER['SERVER_NAME'];
?>

Примерът по-горе ще изведе нещо подобно на:

www.example.com

Бележки

Забележка: Това е 'свръхглобална' или автоматично глобална променлива. Това просто означава, че тя е налична във всички обхвати навсякъде из скрипта. Не е нобходимо да правите global $variable;, за да я достъпвате от тялото на функции и методи.

Вж. също


Предварително-дефинирани променливи
PHP Manual