

$_SERVER è una variabile superglobale introdotta a partire dalla versione PHP 4.0 e deriva strettamente dalla vecchia variabile globale $HTTP_SERVER_VARS, la quale a sua volta è divenuta deprecata.
Il suo contenuto è leggibile come superglobale sia nella procedura principale che all'interno di funzioni, si presenta come un array e le informazioni contenute in essa provengono dalla connessione che viene instanziata tra le macchine server e client. Non tutte le etichette delle specifiche del manuale possono essere presenti, poichè ogni webserver può abilitare o meno la lettura di tali informazioni e lo stesso sistema operativo può rendere o meno fruibili. Per conosce quali sono disponibili o meno, possiamo tranquillamente procedere all'esecuzione del file tramite riga di comando.
Le etichette maggiormente utilizzate, o comunque di maggior interesse per lo sviluppatore sono le seguenti:
- 'HTTP_HOST' ci permette di individuare l'indirizzo dns fisico dove viene richiamato lo script
- 'HTTP_USER_AGENT' sono informazioni sulla macchina client (browser, SO,...)
- 'HTTP_ACCEPT_LANGUAGE' viene data informazione sulla lingua di default e la lista di quelle preferite dal client
- 'HTTP_REFERER' stampa il referer di partenza del link (quando presente)
- 'PATH' abbiamo a disposizione la classpath della macchina server su cui gira la nostra applicazione (utile in fase di sviluppo)
- 'SERVER_SOFTWARE' caratteristiche del web server
- 'SERVER_NAME' il nome dns a cui risponde il web server. Può coincidere con 'HTTP_HOST', se non attivo il multihosting.
- 'SERVER_PORT' la porta a cui risponde il server
- 'DOCUMENT_ROOT' ci da il percorso fisico su disco della macchina hoster. Utilissimo per le operazioni su filesystem
- 'REQUEST_URI' praticamente legge l'indirizzo sulla barra di navigazione del browser a partire dalla root
- 'SCRIPT_NAME' fornisce informazione sul percorso dello script a partire dalla root
Per dare un'occhiata più da vicino ai valori restituiti e comunque disponibili sulla macchina dove state sviluppando, può essere molto utile dare una "sbirciatina" tramite il seguente comando:
<pre> <?php print_r ($_SERVER); ?> </pre>
Che stamperà un risultato del genere:
Array ( [HTTP_HOST] => localhost [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_LANGUAGE] => it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_CONNECTION] => keep-alive [SystemRoot] => C:\windows [COMSPEC] => C:\windows\system32\cmd.exe [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC [WINDIR] => C:\windows [SERVER_SIGNATURE] => <address>Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 Server at localhost Port 80</address> [SERVER_SOFTWARE] => Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 [SERVER_NAME] => localhost [SERVER_ADDR] => ::1 [SERVER_PORT] => 80 [REMOTE_ADDR] => ::1 [DOCUMENT_ROOT] => C:/xampp/htdocs [REQUEST_SCHEME] => http [CONTEXT_PREFIX] => [CONTEXT_DOCUMENT_ROOT] => C:/xampp/htdocs [SERVER_ADMIN] => postmaster@localhost [SCRIPT_FILENAME] => C:/xampp/htdocs/index.php [REMOTE_PORT] => 52244 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => / [SCRIPT_NAME] => /index.php [PHP_SELF] => /index.php [REQUEST_TIME_FLOAT] => 1390064030.11 [REQUEST_TIME] => 1390064030 )
Maggiori informazioni sulla varibile sulla documentazione ufficiale:
it1.php.net/reserved.variables.server.php