tratto da php.net:
http://php.net/manual/en/reserved.variables.server.php
$_SERVER is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server.
There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here.
Traduzione con google traduttore:
$ _SERVER È un array che contiene informazioni come header, percorsi e luoghi di script. Le voci in questo array vengono creati dal server web. Non vi è alcuna garanzia che ogni web server fornirà uno di questi; server può omettere alcuni, o fornire altri non elencati qui.
NB: se il tuo script è molto datato probabile che utilizzi $HTTP_SERVER_VARS invece di $_SERVER ma è deprecato.
Come fare a conoscere gli elementi che compongono l'array $_SERVER che ci vengono messi a disposizione?
Codice PHP:
<?php
foreach($_SERVER as $key => $value)
{
echo '$_SERVER["' . $key . '"] = ' . $value . '
';
}
?>
Inoltre molte di queste info (tra cui quella della lingua accettata) costituiscono delle info che il browser vorrà inviare al server (headers request)... e alcuni browser per motivi di privacy non forniscono queste info.
Su php.net troverai scritto: contains qualcosa: header from the current request
Di conseguenza non si può far affidamento su questo genere di variabili...
In particolare, in relazione alla tua specifica richiesta guarda un pò questa funzione (presa dai commenti su php.net)
Codice PHP:
<?php
/**
* Checking HTTP-Header for language
* needed for various system classes
*
* @return boolean true/false
*/
private function _checkClientLanguage()
{
// OCCORRE VERIFICARE CHE ESISTA... E CHE NON SIA VUOTA!!!
$langcode = (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : '';
$langcode = (!empty($langcode)) ? explode(";", $langcode) : $langcode;
$langcode = (!empty($langcode['0'])) ? explode(",", $langcode['0']) : $langcode;
$langcode = (!empty($langcode['0'])) ? explode("-", $langcode['0']) : $langcode;
return $langcode['0'];
}
?>