Sostieni AppuntiFacili con una piccola donazione su PayPal
Dona con PayPalLe variabili superglobali sono variabili predefinite di PHP, sempre disponibili in qualsiasi punto dello script (funzioni, classi, file inclusi), senza bisogno di dichiararle o importarle.
Il loro nome inizia sempre con $_ seguito da una parola in maiuscolo.
INFO
Le superglobali sono array associativi: contengono coppie chiave → valore.
| Variabile | Descrizione |
|---|---|
$_GET | Dati inviati tramite URL (metodo GET) |
$_POST | Dati inviati tramite form (metodo POST) |
$_REQUEST | Unione di $_GET, $_POST e $_COOKIE |
$_SERVER | Informazioni sul server e sulla richiesta HTTP |
$_SESSION | Dati della sessione utente (persistenti tra le pagine) |
$_COOKIE | Dati dei cookie salvati nel browser |
$_FILES | File caricati tramite form (<input type="file">) |
$_ENV | Variabili d’ambiente del sistema operativo |
$GLOBALS | Accesso a tutte le variabili globali dello script |
$_GETContiene i dati passati nell’URL dopo il simbolo ?.
Esempio di URL:
http://localhost/pagina.php?nome=Luca&eta=20
<?php
$nome = $_GET['nome']; // "Luca"
$eta = $_GET['eta']; // "20"
echo "Ciao, $nome! Hai $eta anni.";
?>
WARNING
I dati ricevuti via $_GET sono visibili nell’URL e non adatti per informazioni sensibili (password, dati personali).
$_POSTContiene i dati inviati tramite un form HTML con metodo POST. I dati non sono visibili nell’URL.
<?php
$nome = $_POST['nome'];
echo "Hai inviato: $nome";
?>
INFO
$_POST è usato per form di login, registrazione e invio dati sensibili perché i valori non appaiono nella barra degli indirizzi.
| Caratteristica | $_GET | $_POST |
|---|---|---|
| Dati visibili nell’URL | Sì | No |
| Adatto per dati sensibili | No | Sì |
| Lunghezza dati | Limitata (~2000 char) | Molto più grande |
| Uso tipico | Filtri, ricerche | Login, form |
$_REQUESTRaccoglie in un unico array i dati di $_GET, $_POST e $_COOKIE.
<?php
$nome = $_REQUEST['nome']; // funziona sia con GET che con POST
?>
WARNING
È comodo ma meno sicuro: non distingue la provenienza del dato. Preferisci sempre $_GET o $_POST esplicitamente.
$_SERVERContiene informazioni sul server, sull’ambiente e sulla richiesta HTTP.
<?php
echo $_SERVER['PHP_SELF']; // percorso del file corrente
echo $_SERVER['REQUEST_METHOD']; // "GET" o "POST"
echo $_SERVER['SERVER_NAME']; // nome del server (es. "localhost")
echo $_SERVER['HTTP_USER_AGENT']; // browser dell'utente
echo $_SERVER['REMOTE_ADDR']; // indirizzo IP dell'utente
?>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "Modulo inviato con POST";
} else {
echo "Pagina visualizzata normalmente";
}
?>
$_SESSIONPermette di memorizzare dati relativi a un utente tra una pagina e l’altra (es. utente loggato, carrello, preferenze).
La sessione deve essere avviata con session_start() prima di qualsiasi output HTML.
<?php
session_start();
// Salvare un dato in sessione
$_SESSION['utente'] = "Mario";
$_SESSION['ruolo'] = "admin";
?>
<?php
// Leggere la sessione in un'altra pagina
session_start();
echo "Benvenuto, " . $_SESSION['utente']; // Benvenuto, Mario
?>
<?php
// Distruggere la sessione (logout)
session_start();
session_destroy();
echo "Logout effettuato.";
?>
INFO
I dati di sessione sono salvati sul server, non nel browser. Il browser riceve solo un ID di sessione (cookie PHPSESSID).
$_COOKIEI cookie sono piccoli dati salvati nel browser dell’utente e inviati al server ad ogni richiesta.
<?php
// Impostare un cookie (valido per 7 giorni)
setcookie("lingua", "it", time() + 7 * 24 * 3600);
?>
<?php
// Leggere un cookie
if (isset($_COOKIE['lingua'])) {
echo "Lingua preferita: " . $_COOKIE['lingua'];
}
?>
WARNING
I cookie sono visibili e modificabili dall’utente. Non usarli per dati sensibili senza cifratura.
| Caratteristica | $_SESSION | $_COOKIE |
|---|---|---|
| Dove sono salvati | Sul server | Nel browser |
| Durata | Fino alla chiusura del browser (default) | Scade alla data impostata |
| Sicurezza | Più sicuri | Meno sicuri |
| Visibilità utente | Non visibili | Visibili nel browser |
$_FILESGestisce i file caricati tramite un form HTML.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="foto">
<button type="submit">Carica</button>
</form>
<?php
if (isset($_FILES['foto'])) {
$nome_file = $_FILES['foto']['name'];
$tmp = $_FILES['foto']['tmp_name'];
move_uploaded_file($tmp, "uploads/" . $nome_file);
echo "File caricato: $nome_file";
}
?>
I dati ricevuti dall’esterno (GET, POST, COOKIE) possono contenere codice malevolo. È fondamentale validarli e sanitizzarli.
<?php
// Rimozione di tag HTML e caratteri pericolosi
$nome = htmlspecialchars($_POST['nome']);
$eta = intval($_POST['eta']); // converti in intero
echo "Nome: $nome, Età: $eta";
?>
WARNING
Non fidarti mai dei dati provenienti dall’utente. Usa sempre htmlspecialchars() per le stringhe e intval() / floatval() per i numeri.
?nome=...) e mostri un messaggio di benvenuto personalizzato.$_SERVER['HTTP_USER_AGENT'], mostra il browser con cui l’utente sta navigando.$_GET e $_POST, e quando usare $_SESSION invece dei cookie.1) Le variabili superglobali sono disponibili:
2) Quale superglobale contiene i dati visibili nell'URL?
3) Quale funzione bisogna chiamare prima di usare $_SESSION?
4) Dove vengono salvati i dati di sessione?
5) Quale funzione si usa per salvare un cookie?
6) Quale superglobale contiene informazioni sul browser dell'utente?
7) Perché usare htmlspecialchars() sui dati ricevuti dall'utente?
8) Quale superglobale gestisce i file caricati da un form?