Le variabili superglobali sono usate per passare lo stato globale dell'applicazione e la comunicazione HTTP.
Il vantaggio principale di queste variabili è che sono sempre e ovunque disponibili. In pratica, sono array di valori in cui si accede a informazioni specifiche per indice. In diversi contesti, la disponibilità delle chiavi può variare (spiegato di seguito).
Tutti i superglobal in PHP sono array e sono denotati da un segno di dollaro seguito da un trattino basso (eccetto $GLOBALS
) e da caratteri maiuscoli.
In PHP 7
ci sono in particolare le seguenti:
Variabile | Descrizione |
---|---|
$_GET |
Parametri URL inviato dal metodo GET |
$_POST |
Dati del modulo inviato da POST. Nota che può comportarsi diversamente in ajax. |
$_REQUEST |
Dati del modulo inviati da qualsiasi metodo ($_GET , $_POST e $_REQUEST ). |
$_FILES |
Informazioni tecniche sui file attualmente caricati, per esempio tramite il costrutto <input type="file"> . |
$_SERVER |
Impostazioni del server web, indirizzo IP, configurazione... varia a seconda dell'ambiente (quando si chiama uno script PHP da terminale conterrà valori diversi e per esempio le informazioni sulla richiesta corrente saranno mancanti). |
$_COOKIE |
Configurato cookies. |
$_SESSION |
Dati di sessione (session), se esiste ed è stato impostato in passato. |
$GLOBALS |
Attenzione, non contiene un underscore nel nome! Questa è la cosiddetta global-variable e una notazione alternativa per la parola chiave global . Se hai una variabile globale $variabile nella tua applicazione, puoi anche accedervi con il costrutto $GLOBALS["variabile"] . Tuttavia, usare le variabili globali è una soluzione cattiva e impura per progettazione, quindi è meglio non farlo. |
$_ENV |
Informazioni sull'ambiente corrente dove PHP è in esecuzione. |
Elencare tutti i valori esistenti è facile da fare:
foreach ($_SERVER as $key => $value {echo $key . ':' . $value . '<br>';}
Nota: non tutti gli indici devono sempre esistere (per esempio, se lo script esegue cron in modalità CLI, l'indice con l'URL della pagina o l'indirizzo IP della richiesta non esisterà).
Raccomando che tutte le variabili globali (tranne $_SESSION
) siano di sola lettura. Questo perché contengono dati globali dell'applicazione e altro codice può tenerne conto (per esempio, un'altra libreria installata).
Un altro svantaggio dello stato globale è che non si può sempre fare affidamento sui valori esatti, anche se esistono, quindi si dovrebbe sempre controllare le loro chiavi con il costrutto isset()
.
Per salvare un nuovo cookie, usate setcookie()
e non inserite il valore direttamente. Questo perché è di sola lettura.
Mai fidarsi ciecamente dei valori delle variabili superglobali!
L'utente può usare l'URL e le intestazioni inviate per influenzare il modo in cui i valori sono impostati. Tutti gli input devono sempre essere accuratamente convalidati.
Nella vecchia versione di PHP (fino a 5.4.0
), c'era una direttiva speciale register-globals
(configurabile in php.ini
) che faceva sì che tutti i parametri passati in un URL fossero automaticamente registrati come variabili.
Per esempio:
Un utente è arrivato all'URL: https://example.com/script.php?var=24
.
E PHP ha creato automaticamente una variabile $var
con il valore 24
all'interno dello script.
Quindi ha funzionato in modo classico:
echo $var;
Chiunque potrebbe quindi infilare qualsiasi variabile nello script e cambiarne il contenuto. Ovviamente, la sicurezza non era sempre una priorità. Non proprio.
Per una descrizione più dettagliata, vedere il manuale ufficiale.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | it