PHP

$_SESSION

Spiegazione della variabile superglobale $_SESSION in PHP con esempi pratici e laboratorio guidato

GESTIONE DEI FORM | $_SESSION

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


Nome utente:

<?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.


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.