PHP $_SERVER - jak na to
Napsal: sob 06. úno 2016 11:48:15
Proměnná $_SERVER je brutálně užitečná záležitost. Zkusím tu popsat a okomentovat všechny možnosti co nám skýtá. Veškeré příklady jsou vztažené ke skriptu běžící na cestě: http://nejen.cz/aplikace/prijezdy/dnes/script.php?app=cd
'PHP_SELF' - Zobrazí jméno skriptu ze kterého byla proměná zobrazena (zobrazí se: /script.php )V PHP od verze 4.3.0.
'GATEWAY_INTERFACE' - Zobrazí verzi/revizi CGI interfeace např. 'CGI/1.1'. K čemu to je dobré netuším.
'SERVER_ADDR' - Zobrazí IPv4 nebo IPv6 adresu na kterém běží server.
'SERVER_NAME' - Zobrazí jméno serveru na kterém skript běží. Tedy typicky doménu. (zobrazí se: nejen.cz)
'SERVER_SOFTWARE' - Zobrazí sw info o serveru. Tedy například: Apache/2.2.15 (FreeBSD)
'SERVER_PROTOCOL' - Zobrazí jméno a verzi protokolu na kterém byl poslán a odeslán požadavek na skript. Tedy např: HTTP/1.1. Neslouží k rozpoznávání http/https! 'REQUEST_METHOD' Zobrazí jaká metoda byla použita pro přístup ke stránce např: 'GET', 'HEAD', 'POST', 'PUT'.
'REQUEST_TIME' - Zobrazí unix timstamp / časové razítko času ve kterém byl spuštěn script. Dostupné od verze PHP 5.1.0.
'REQUEST_TIME_FLOAT' - Zobrazí unix timstamp / časové razítko času (s přesností na mikrosekundy) ve kterém byl spuštěn script. Dostupné od verze PHP 5.4.0.
'QUERY_STRING' - Zobrazí proměnné/text za otazníkem v URL adrese. Tedy např.: app=cd
'DOCUMENT_ROOT' - Zobrazí cestu na serveru ze které byl script spuštěn. Není spolehlivé, spíše to ukazuje cestu co je napsaná v konfiguračním souboru než cestu ke scriptu. Tedy opatrně.
'HTTP_ACCEPT' - Zobrazí obsah hlavičky aktuálního požadavku. Např: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
'HTTP_ACCEPT_CHARSET' - Obsah odeslané signalizace o akceptování kódové stránky. Např:: 'iso-8859-1,*,utf-8'. Není možné se na to spolehnout.
'HTTP_ACCEPT_ENCODING' - Obsah Accept-Encoding: aktuálního požadavku, Např: 'gzip, deflate'.
'HTTP_ACCEPT_LANGUAGE' - Obsah Accept-Language: z hlavičky odeslaného požadavku,Např: 'cs,en-US;q=0.7,en;q=0.3'. Tedy může posloužit pro automatický výběr jazyka.
'HTTP_CONNECTION' - Obsah Connection: z hlavičky aktuální požadavku, Např: 'keep-alive'.
'HTTP_HOST' - Obsah Host:z hlavičky aktuální požadavku, Např: nejen.cz
'HTTP_REFERER' - Adresa stránky ze které byl požadavek odeslán. REFERER. Závisí na tom co prohlížeč klienta chce aby bylo zobrazeno. Není možné tomu moc věřit.
'HTTP_USER_AGENT' - Zobrazí informaci o prohlížeči klienta. Tedy např: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0 Opět záleží na tom co prohlížeč chce o sobě prozradit. Moc se tomu věřit nedá a dá se to podvrhnout.
'HTTPS' - Zobrazí informaci o tom zda je použit https protokol. Pokud není tak je proměná prázdná a poku je https použit tak v proměnné je text: on
Příklad použití:
'REMOTE_ADDR' - Zobrazí IPv4 nebo IPv6 adresu ze které přišel požadavek. Velmi šikovné
'REMOTE_HOST' - Zobrazí reverzní dns k ip adrese klienta. Není vždy dostupné. Záleží to na serveru.
'REMOTE_PORT' - Port který si server a klinet domluvili k používání. Tedy nějaký nad 1024. Např: 56267. Využití asi nulové.
'REMOTE_USER' - Autentifikovaný uživatel (pokud se použilo klasické přihlašování přes .passwd) Jinak prázdné.
'SCRIPT_FILENAME' - Absolutní cesta ke skriptu na serveru. Tedy se jedná o zobrazení lokální cesty na diskovém systému serveru. Např: /var/www/nejen.cz/aplikace/prijezdy/dnes/script.php
Celkem se tomu dá věřit.
'SERVER_ADMIN' - The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file. If the script is running on a virtual host, this will be the value defined for that virtual host.
'SERVER_PORT' - Zobrazí číslo portu na kterém běží komunikace. Tedy například port 80. Pokud používáte ssl (https) tak se port změní např na: 443. Porty 80 a 443 jsou výchozí pro http a https protokol. Informace je to tedy zajímavá, ale v praxi asi k ničemu.
'SERVER_SIGNATURE' - Text obsahuje verzi a host jméno serveru. Např: <address>Apache/2.2.15 (FreeBSD) Server at nejen.cz Port 80</address>
'SCRIPT_NAME' - Zobrazí jméno skriptu ze kterého byla proměná zobrazena (zobrazí se: /script.php ) To samé co _SELF rozdíl zatím netuším ale nějaký tam bude
'REQUEST_URI' - Zobrazí část URL adresy která následuje po doméně a bez názvu scriptu tedy např.: /aplikace/prijezdy/dnes Je to velmi použitelné při doplňování cest třeba pro volání obrázků,css,js atd
'PHP_AUTH_DIGEST' - When doing Digest HTTP authentication this variable is set to the 'Authorization' header sent by the client (which you should then use to make the appropriate validation).
'PHP_AUTH_USER' - When doing HTTP authentication this variable is set to the username provided by the user.
'PHP_AUTH_PW' - When doing HTTP authentication this variable is set to the password provided by the user.
'AUTH_TYPE' - When doing HTTP authentication this variable is set to the authentication type.
'PATH_INFO' - Mělo by to ukázat celou url adresu, ale mne nefunguje.
'ORIG_PATH_INFO'- Mělo by to ukázat celou url adresu před provedení skriptu, ale mne nefunguje.
Příklad jak zobrazovat výše uvedené informace:
'PHP_SELF' - Zobrazí jméno skriptu ze kterého byla proměná zobrazena (zobrazí se: /script.php )V PHP od verze 4.3.0.
'GATEWAY_INTERFACE' - Zobrazí verzi/revizi CGI interfeace např. 'CGI/1.1'. K čemu to je dobré netuším.
'SERVER_ADDR' - Zobrazí IPv4 nebo IPv6 adresu na kterém běží server.
'SERVER_NAME' - Zobrazí jméno serveru na kterém skript běží. Tedy typicky doménu. (zobrazí se: nejen.cz)
'SERVER_SOFTWARE' - Zobrazí sw info o serveru. Tedy například: Apache/2.2.15 (FreeBSD)
'SERVER_PROTOCOL' - Zobrazí jméno a verzi protokolu na kterém byl poslán a odeslán požadavek na skript. Tedy např: HTTP/1.1. Neslouží k rozpoznávání http/https! 'REQUEST_METHOD' Zobrazí jaká metoda byla použita pro přístup ke stránce např: 'GET', 'HEAD', 'POST', 'PUT'.
'REQUEST_TIME' - Zobrazí unix timstamp / časové razítko času ve kterém byl spuštěn script. Dostupné od verze PHP 5.1.0.
'REQUEST_TIME_FLOAT' - Zobrazí unix timstamp / časové razítko času (s přesností na mikrosekundy) ve kterém byl spuštěn script. Dostupné od verze PHP 5.4.0.
'QUERY_STRING' - Zobrazí proměnné/text za otazníkem v URL adrese. Tedy např.: app=cd
'DOCUMENT_ROOT' - Zobrazí cestu na serveru ze které byl script spuštěn. Není spolehlivé, spíše to ukazuje cestu co je napsaná v konfiguračním souboru než cestu ke scriptu. Tedy opatrně.
'HTTP_ACCEPT' - Zobrazí obsah hlavičky aktuálního požadavku. Např: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
'HTTP_ACCEPT_CHARSET' - Obsah odeslané signalizace o akceptování kódové stránky. Např:: 'iso-8859-1,*,utf-8'. Není možné se na to spolehnout.
'HTTP_ACCEPT_ENCODING' - Obsah Accept-Encoding: aktuálního požadavku, Např: 'gzip, deflate'.
'HTTP_ACCEPT_LANGUAGE' - Obsah Accept-Language: z hlavičky odeslaného požadavku,Např: 'cs,en-US;q=0.7,en;q=0.3'. Tedy může posloužit pro automatický výběr jazyka.
'HTTP_CONNECTION' - Obsah Connection: z hlavičky aktuální požadavku, Např: 'keep-alive'.
'HTTP_HOST' - Obsah Host:z hlavičky aktuální požadavku, Např: nejen.cz
'HTTP_REFERER' - Adresa stránky ze které byl požadavek odeslán. REFERER. Závisí na tom co prohlížeč klienta chce aby bylo zobrazeno. Není možné tomu moc věřit.
'HTTP_USER_AGENT' - Zobrazí informaci o prohlížeči klienta. Tedy např: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0 Opět záleží na tom co prohlížeč chce o sobě prozradit. Moc se tomu věřit nedá a dá se to podvrhnout.
'HTTPS' - Zobrazí informaci o tom zda je použit https protokol. Pokud není tak je proměná prázdná a poku je https použit tak v proměnné je text: on
Příklad použití:
Kód: Vybrat vše
<?php
function protocol_url()
{
if(isset($_SERVER['HTTPS']))
{
if ($_SERVER['HTTPS'] == "on")
{
echo "https://".$_SERVER['SERVER_NAME'];
$secure_connection = true;
}
}
else
{
echo "http://".$_SERVER['SERVER_NAME'];
$secure_connection = false;
}
}
?>
'REMOTE_HOST' - Zobrazí reverzní dns k ip adrese klienta. Není vždy dostupné. Záleží to na serveru.
'REMOTE_PORT' - Port který si server a klinet domluvili k používání. Tedy nějaký nad 1024. Např: 56267. Využití asi nulové.
'REMOTE_USER' - Autentifikovaný uživatel (pokud se použilo klasické přihlašování přes .passwd) Jinak prázdné.
'SCRIPT_FILENAME' - Absolutní cesta ke skriptu na serveru. Tedy se jedná o zobrazení lokální cesty na diskovém systému serveru. Např: /var/www/nejen.cz/aplikace/prijezdy/dnes/script.php
Celkem se tomu dá věřit.
'SERVER_ADMIN' - The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file. If the script is running on a virtual host, this will be the value defined for that virtual host.
'SERVER_PORT' - Zobrazí číslo portu na kterém běží komunikace. Tedy například port 80. Pokud používáte ssl (https) tak se port změní např na: 443. Porty 80 a 443 jsou výchozí pro http a https protokol. Informace je to tedy zajímavá, ale v praxi asi k ničemu.
'SERVER_SIGNATURE' - Text obsahuje verzi a host jméno serveru. Např: <address>Apache/2.2.15 (FreeBSD) Server at nejen.cz Port 80</address>
'SCRIPT_NAME' - Zobrazí jméno skriptu ze kterého byla proměná zobrazena (zobrazí se: /script.php ) To samé co _SELF rozdíl zatím netuším ale nějaký tam bude
'REQUEST_URI' - Zobrazí část URL adresy která následuje po doméně a bez názvu scriptu tedy např.: /aplikace/prijezdy/dnes Je to velmi použitelné při doplňování cest třeba pro volání obrázků,css,js atd
'PHP_AUTH_DIGEST' - When doing Digest HTTP authentication this variable is set to the 'Authorization' header sent by the client (which you should then use to make the appropriate validation).
'PHP_AUTH_USER' - When doing HTTP authentication this variable is set to the username provided by the user.
'PHP_AUTH_PW' - When doing HTTP authentication this variable is set to the password provided by the user.
'AUTH_TYPE' - When doing HTTP authentication this variable is set to the authentication type.
'PATH_INFO' - Mělo by to ukázat celou url adresu, ale mne nefunguje.
'ORIG_PATH_INFO'- Mělo by to ukázat celou url adresu před provedení skriptu, ale mne nefunguje.
Příklad jak zobrazovat výše uvedené informace:
Kód: Vybrat vše
<?php
$text = $_SERVER['SERVER_PORT'];
echo $text;
?>