PHP $_SERVER - jak na to

Odeslat odpověď


Odpoveď na tuto otázku je nutná pro rozlišení automatizovaných pokusů o registraci.
Smajlíci
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode je zapnutý
[img] je zapnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: PHP $_SERVER - jak na to

PHP $_SERVER - jak na to

od Rybička » 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í:

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_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:

Kód: Vybrat vše

<?php 
$text = $_SERVER['SERVER_PORT'];
echo $text;
?>

Nahoru