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

 

 
© 2014 • Rudylab
Questo blog non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità. Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001.