La variabile superglobale $_SESSION in PHP permette di memorizzare dati temporanei per un singolo utente e mantenerli disponibili tra diverse pagine. È uno strumento fondamentale per creare aree riservate, login e carrelli di e-commerce.
1️⃣ Cos'è una Sessione
Una sessione è un meccanismo che permette di riconoscere un utente durante la navigazione tra più pagine del sito. PHP crea un identificatore univoco (session ID) che viene salvato nel browser tramite un cookie.
Ogni volta che l'utente visita una nuova pagina, PHP recupera i dati associati a quel session ID.
2️⃣ Come si avvia una sessione
Prima di poter usare $_SESSION, è necessario avviare la sessione con:
<?php
session_start();
// Ora possiamo memorizzare variabili di sessione
$_SESSION["utente"] = "Mario";
$_SESSION["email"] = "mario@example.com";
echo "Benvenuto, " . $_SESSION["utente"];
?>
💡 Nota: la funzione session_start() deve essere richiamata prima di qualsiasi output HTML, altrimenti verrà generato un errore.
3️⃣ Dove vengono salvate le sessioni
Le informazioni di sessione vengono salvate sul server (di solito in una cartella temporanea) e PHP assegna un session ID univoco al client, memorizzato in un cookie chiamato PHPSESSID.
4️⃣ Leggere e modificare variabili di sessione
Le variabili di sessione possono essere lette e modificate in qualsiasi pagina del sito, purché sia stata avviata la sessione.
<?php
session_start();
echo "Utente attivo: " . $_SESSION["utente"];
$_SESSION["visite"] = ($_SESSION["visite"] ?? 0) + 1;
echo "<br>Visite totali: " . $_SESSION["visite"];
?>
5️⃣ Eliminare o distruggere la sessione
Per eliminare una variabile specifica:
unset($_SESSION["utente"]);
Per chiudere completamente la sessione (ad esempio durante il logout):
session_start();
session_unset(); // Elimina tutte le variabili di sessione
session_destroy(); // Termina la sessione
6️⃣ Esempio pratico: login semplice
<?php
// login.php
session_start();
$utente = htmlspecialchars($_POST["utente"] ?? "");
if ($utente) {
$_SESSION["utente"] = $utente;
header("Location: area_riservata.php");
exit;
} else {
echo "Inserisci un nome utente!";
}
?>
Nel file area_riservata.php puoi leggere la sessione:
<?php
session_start();
if (!isset($_SESSION["utente"])) {
header("Location: login.html");
exit;
}
echo "Benvenuto, " . $_SESSION["utente"] . "!";
echo "<br><a href='logout.php'>Logout</a>";
?>
7️⃣ Logout
<?php
session_start();
session_unset();
session_destroy();
echo "Hai effettuato il logout.";
?>
8️⃣ Laboratorio: gestire una sessione
LABORATORIO
Memorizzare dati utente con $_SESSION
In questo laboratorio creerai un mini sistema di login basato sulle sessioni per capire come PHP conserva le informazioni tra più pagine.
- Editor PHP (es. VS Code)
- Server locale (XAMPP/MAMP/Laragon)
- Browser web
1 Crea il file login.php
Crea la pagina di login con il form di inserimento dati.
<form action="verifica_login.php" method="post">
Nome utente: <input type="text" name="utente"><br>
<input type="submit" value="Accedi">
</form>
2 Crea il file verifica_login.php
<?php
session_start();
$utente = htmlspecialchars($_POST["utente"] ?? "");
if ($utente) {
$_SESSION["utente"] = $utente;
header("Location: area_riservata.php");
exit;
} else {
echo "Inserisci un nome utente!";
}
?>
3 Crea il file area_riservata.php
<?php
session_start();
if (!isset($_SESSION["utente"])) {
header("Location: login.php");
exit;
}
echo "Benvenuto, " . $_SESSION["utente"] . "!";
echo "<br><a href='logout.php'>Logout</a>";
?>
4 Crea il file logout.php
<?php
session_start();
session_unset();
session_destroy();
echo "Sessione terminata.";
?>
5 Testa il funzionamento
- Apri login.php e inserisci un nome.
- Verifica che area_riservata.php riconosca l'utente.
- Prova il link Logout per chiudere la sessione.
- Ricarica la pagina riservata per notare che l'accesso è negato.