La variabile superglobale $_COOKIE in PHP è un array associativo che contiene tutti i cookie inviati al server dal browser dell’utente.
I cookie sono piccoli file di testo che il server invia al client e che vengono memorizzati nel browser. Alla successiva richiesta HTTP, il browser rimanda automaticamente al server i cookie precedentemente salvati.
🔹 Come funziona un cookie
- Il cookie viene impostato dal server con la funzione
setcookie(). - Il browser salva il cookie localmente.
- Ad ogni richiesta successiva verso lo stesso dominio, il cookie viene inviato nel campo HTTP_COOKIE dell’intestazione.
🔹 Sintassi della funzione setcookie()
setcookie(nome, valore, scadenza, percorso, dominio, sicuro, httponly);
🔹 Parametri principali
| Parametro | Descrizione | Esempio |
|---|---|---|
| nome | Il nome del cookie. | "utente" |
| valore | Il contenuto memorizzato nel cookie. | "Mario" |
| scadenza | Timestamp UNIX di scadenza (con time() + 3600 per 1 ora). | time() + 3600 |
| percorso | Percorso in cui il cookie è valido. | "/" |
| dominio | Dominio per cui è valido. | "example.com" |
| sicuro | Se impostato su true, il cookie è inviato solo tramite HTTPS. | true |
| httponly | Impedisce l’accesso al cookie da JavaScript (protezione XSS). | true |
🔹 Esempio base di utilizzo
<?php
// Imposta un cookie che dura 1 ora
setcookie("utente", "Mario Rossi", time() + 3600);
// Legge il valore del cookie (dopo il refresh)
if (isset($_COOKIE["utente"])) {
echo "Ciao " . $_COOKIE["utente"];
}
?>
🔹 Nota importante
I cookie vengono inviati dal browser dopo che la pagina è stata ricaricata. Per questo motivo, se imposti un cookie e lo leggi subito nella stessa esecuzione, il valore non sarà ancora disponibile fino al refresh della pagina.
LABORATORIO
Gestire i cookie con $_COOKIE
In questo laboratorio imparerai a impostare, leggere e cancellare cookie in PHP utilizzando la variabile $_COOKIE. Creeremo una piccola applicazione che memorizza il nome dell’utente e lo saluta al ritorno sulla pagina.
- Editor di codice (VS Code, PhpStorm, Notepad++)
- Server locale o remoto con PHP (XAMPP, MAMP, Laragon)
- Browser per visualizzare e ispezionare i cookie
1 Creare il file principale
Crea un file chiamato gestione-cookie.php e aggiungi il seguente codice:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Laboratorio $_COOKIE</title>
</head>
<body>
<h2>Gestione Cookie in PHP</h2>
<?php
if (isset($_POST["nome"])) {
$nome = $_POST["nome"];
setcookie("utente", $nome, time() + 3600); // Cookie valido per 1 ora
echo "<p>Ciao <b>$nome</b>, il tuo cookie è stato impostato!</p>";
echo "<p>Ricarica la pagina per leggere il valore del cookie.</p>";
}
?>
<form method="post">
Inserisci il tuo nome: <input type="text" name="nome">
<input type="submit" value="Salva cookie">
</form>
</body>
</html>
2 Leggere un cookie
Dopo aver impostato il cookie e ricaricato la pagina, puoi leggerlo con la variabile $_COOKIE:
<?php
if (isset($_COOKIE["utente"])) {
echo "<p>Bentornato, <b>" . htmlspecialchars($_COOKIE["utente"]) . "</b>!</p>";
} else {
echo "<p>Nessun cookie impostato.</p>";
}
?>
3 Cancellare un cookie
Per eliminare un cookie basta impostarlo con una data di scadenza passata:
<form method="post">
<input type="submit" name="elimina" value="Elimina cookie">
</form>
<?php
if (isset($_POST["elimina"])) {
setcookie("utente", "", time() - 3600); // Scadenza nel passato
echo "<p>Cookie eliminato!</p>";
}
?>
4 Visualizzare tutti i cookie
Per mostrare tutti i cookie attivi puoi utilizzare un ciclo foreach su $_COOKIE:
<h3>Tutti i cookie disponibili</h3>
<ul>
<?php
foreach ($_COOKIE as $chiave => $valore) {
echo "<li><b>" . htmlspecialchars($chiave) . ":</b> " . htmlspecialchars($valore) . "</li>";
}
?>
</ul>
5 Test e analisi
- Apri gestione-cookie.php nel browser.
- Inserisci un nome e invia il modulo: il cookie verrà impostato.
- Ricarica la pagina e verifica che venga mostrato il messaggio di benvenuto.
- Apri gli strumenti di sviluppo del browser → “Applicazione” → “Cookie” per visualizzarli.
- Prova il pulsante di eliminazione e verifica che il cookie sparisca.