Le variabili contenenti informazioni che devono avere visibilità globale sono raccolte in array superglobali.
Client
Informazioni provenienti dal lato client
$_GET[] | $HTTP_GET_VARS[] | contiene i dati inviati con un form con method='get' |
$_POST[] | $HTTP_POST_VARS[] | contiene i dati inviati con un form con method='post' |
$_COOKIE[] | … | |
$_REQUEST[] | contiene tutti i dati disponibili in $_GET, $_POST, $_COOKIE | |
$_FILES[] | contiene i dati sui file inviati con un form con method='post' |
Server
$_SERVER[] | $HTTP_SERVER_VARS[] | argc argv DOCUMENT_ROOT PHP_SELF PHP_AUTH_USER PHP_AUTH_PW QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_PORT REQUEST_METHOD REQUEST_TIME REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME SERVER_ADMIN SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SIGNATURE SERVER_SOFTWARE |
$_ENV[] | $HTTP_ENV_VARS[] | variabili d’ambiente del server, sono quelle in php_info() |
$_SESSION[] | le variabili impostate nella sessione corrente | |
$GLOBALS[] | le variabili dello script con visibilità globale. $GLOBALS['a'] è alternativo a global $a; |
register_long_array
Impostando la direttiva in php.ini
si potrebbero utilizzare i nomi lunghi per le variabili superglobali precedenti alla versione 4.1.0 di PHP
Sono stati abbandonati per la lunghezza eccessiva…
register_globals
Impostando la direttiva in php.ini
si potrebbero utilizzare le variabili superglobali, come nelle prime versioni di PHP, senza utilizzare l’array corrispondente
1 2 |
$c=$cognome; // $cognome proviene da un form? $d=$data // $data è locale? |
Le variabili locali e superglobali conviverebbero con nomi simili!
Questa tecnica è assolutamente da evitare perché sarebbe la causa di continui errori di programmazione.