Superglobální proměnná $_SERVER

V tomto článku ji mírně rozklíčuji pro začátečníky.

$_SERVER je pole obsahující důležité informace o komunikaci mezi serverem a klientem, dále o informacích serveru, scriptu a dalších užitečných věcech.

V následující tabulce vám povím, jak jsou pole proměnné pojmenovány a k čemu to je dobré, pokud to samo o sobě nevyplývá z obsahu.

Název poleObsahK čemu
['PHP_SELF'] Název souboru aktuálně vykonávaného scriptu, relativně ke kořeni stránky. Můžete to využít například pro zpracování formláře.
['argv'] Pole s argumenty v případě že spouštíte script z příkazové řádky na serveru. Pokud máte obslužnou rutinu napsanou v PHP přímo na serveru, kterou spouští cron, je to v celku neocenitelná pomůcka.
['argc'] Počet parametrů zaslaných příkazovou řádkou. Pro zpracování předchozího pole.
['GATEWAY_INTERFACE'] Jaká verze CGI je na serveru používána. Může tu námi napsaný script vůbec běžet.
['SERVER_ADDR'] IP adresa serveru, na které script právě beži. Užitečné zejména pro tvorbu zabezpečení.
['SERVER_NAME'] Název serveru, pod kterým aktuální script běží. Pokud se používá virtuální host, tak se zobrazí ten. Jsem tam kde mám být?
['SERVER_SOFTWARE'] Identifikace serveru. Například Ubuntu 12.04/Apache 2.2 Je to o PHP, ale aby jsme věděli, proč tam ten ASPX soubor nechce běžet :)
['SERVER_PROTOCOL'] Název a verze protokolu, přes který byla stránka vyžádána. (HTTP/1.0) Protokoly jsou různé a musíme vědět co si v nich lze dovolit.
['REQUEST_METHOD'] Jakou metodou byla stránka zavolána (GET,POST,HEAD,PUT) Záleží co se scriptem chceme dělat.
['REQUEST_TIME'] Časové razítko spuštění scriptu. (od PHP 5.1.0) Jedna z cest, jak začít počítat trvání scriptu a opět pro zabezpečení.
['REQUEST_TIME_FLOAT'] Časové razítko spuštění scriptu v microsekundách. (od PHP 5.4.0) Chceme to přesněji
['QUERY_STRING'] Jakým řetězcem byla stránka zavolána. (Pokud existuje) Dobré, pro ověřování přenášených parametrů, například při sopuštění přes cron.
['DOCUMENT_ROOT'] Fyzická adresa adresáře na severu, ve kterém začíná kořen daného webu. Šikovné, zejména, pokud potřebujeme zpracovávat soubory v aplikaci na serveru a musí se s nimi manipulovat fyzicky.
['HTTP_ACCEPT'] Obsahuje Accept: hlavičku aktuálního požadavku (Pokud existuje)  
['HTTP_ACCEPT_CHARSET'] Obsahuje Accept-Charset: hlavičku aktuálního požadavku (Pokud existuje) Na jakém charsetu budeme komunikovat. (utf-8,*,iso-8859-1)
['HTTP_ACCEPT_ENCODING'] Obsahuje Accept-Encoding: hlavičku aktuálního požadavku (Pokud existuje) Na jakém kodováni budeme komunikovat. (gzip)
['HTTP_ACCEPT_LANGUAGE'] Obsahuje Accept-Language: hlavičku aktuálního požadavku (Pokud existuje) V jakém jazyce budeme komunikovat. (en)
['HTTP_CONNECTION'] Obsahuje Connection: hlavičku aktuálního požadavku (Pokud existuje) Zda například udržovat připojení (keep-alive)
['HTTP_HOST'] Obsahuje Host: hlavičku aktuálního požadavku. (Pokud existuje) Jakého serveru se dotazuji.
['HTTP_REFERER'] Adresa, ze které uživatel přišel na aktuální, pokud nějaká je. Tato hodnota není plně důvěryhodná a nelze nani tedy spoléhat.
['HTTP_USER_AGENT'] Obsahuje podpis programu, který si stránku vyžádal. Chceme-li si hrát například na rozdílné zobrazení pro IE, Mozillu, Chrome, atp.
['HTTPS'] Probíhá komunikace na SSL? Pokud ne, je odpověď prázdná.
['REMOTE_ADDR'] IP adresa odkud požadavek přišel. Šikovná věc při vytváření zabezpečení, ale může způsobovat problémy, pokud postavíte IP adresu jako jeden prvek ověřeni. Při připojení přes mobil, mužete mít mezi Requesty změnu IP a neprojdete validací.
['REMOTE_HOST'] Reverzní záznam adresy odkud požadavek přišel. Pokud nějaký existuje, můžete ho přidávat třeba k příspěvkům na fóru.
['REMOTE_PORT'] Vzdálený port, ze kterého požadavek přišel. Port, na kterém komunikuje stroj klienta se serverem.
['REMOTE_USER'] Vzdálený autorizovaný uživatel.  
['REDIRECT_REMOTE_USER'] Autorizovaný uživatel, jestli že byl interně  přesměrován.  
['SCRIPT_FILENAME'] Absolutní adresa spuštěného scriptu.  
['SERVER_ADMIN'] Pouze Apache (informace o administrátorovi, u virtual hosta může být přepsán jeho konfigurací)  
['SERVER_PORT'] Adresa portu, využívaná pro komunikaci webu (80,443)  
['SERVER_SIGNATURE'] Obsahuje podpis serveru: verzi a virtualhosta stránky scriptu.  
['PATH_TRANSLATED'] Fyzická cesta ke scriptovému souboru. Poté co server dokonči virtuální mapování na fyzické.  
['SCRIPT_NAME'] Obsahuje adresu scriptu  
['REQUEST_URI'] Obsahuje adresu od kořene hosta. (/index.html) Pokud potřebujete zjistit, na jaké stránce jste, pak je to šikovná věc.
['PHP_AUTH_DIGEST'] Digest HTTP authentifikace.  
['PHP_AUTH_USER'] Http authentifikace - uživatelksé jméno, které klient zaslal.  
['PHP_AUTH_PW'] Http authentifikace - heslo, které klient zaslal.  
['AUTH_TYPE'] Typ http authentifikace.  
['PATH_INFO'] Obsahuje cast cesty zaslané klientem za aktuálním scriptem.  
['ORIGINAL_PATH_INFO'] Původní PATH_INFO - před zpracováním PHP.  

Užitečná rada na závěr. Pokud nechcete v této proměnné nic měnit, pouze přistupovat k informacím v ní, tak si její hodnotu přeneste na vlastní proměnnou.

Více se můžete dočíst v originále na stránce php.net

Autor: