Guida PHP

Home | Guida PHP | Art. # 24

Le sessioni in PHP

Registrazione Domini
Registrazione Domini Internet ai prezzi più bassi d'Europa: soli 5,40 euro più IVA all'anno!

Le sessioni sono variabili del server che servono a gestire la sessione di navigazione dell'utente e non solo. Simili ai cookies ma più sicure perchè dipendono meno dal browser dell'utente, le sessioni vengono in genere impiegate per gestire aree riservate oppure per ottemperare a funzionalità di controllo per le quali si sceglie di usarle al posto cookies.

La sostanziale differenza tra cookies e sessioni è che una session scade al termine della navigazione dell'utente o alla chiusura del browser e non è possibile impostarne la scadenza o gestirne altri aspetti.

In PHP utilizziamo la variabile $_SESSION per creare e per leggere la sessione, ma dobbiamo sempre, come prima riga del file, dichiarare l'utilizzo delle sessioni utilizzando la funzione session_start().

La struttura di una pagina PHP che utilizza le sessioni è dunque la seguente:

<?
    session_start();
?>
<html>
...

Creizione e lettura di una sessione in PHP

Facciamo un esempio:

<?
    session_start();
?>
<html>
<body>

<?
    // Creo la sessione
    $_SESSION["autore"] = "Luca Ruggiero";

    // Stampo a video il valore della sessione
    echo $_SESSION["autore"];
?>

</body>
</html>

Vedremo stampato a video il valore "Luca Ruggiero".

La sessione è ormai attiva e, fino alla fine della navigazione da parte dell'utente il suo valore sarà memorizzato. Si provi dunque (senza chiudere il browser con la pagina di esempio) a cancellare la riga che crea la sessione, lasciando solo la riga che ne legge il valore, come nell'esempio che segue:

<?
    session_start();
?>
<html>
<body>

<?
    echo $_SESSION["autore"];
?>

</body>
</html>

Anche se il valore della session non è più presente nello script, il suo valore sarà stampato a video, essendo ancora presente nella memoria del server.

Cancellazione di una sessione in PHP

Per cancellare il valore della sessione sarà sufficiente impostare su "vuoto" il suo valore, come nell'esempio che segue:

<?
    session_start();
    $_SESSION["autore"] = "";
    // Distrugge solo la sessione specificata
?>

E' possibile anche utilizzare la funzione unset() di PHP oppure la specifica funzione session_destroy() che non si limita a distruggere una singola sessione ma distrugge tutte le sessioni attive in quel momento sul server per il browser collegato.

Facciamo un esempio di codice per entrambe le funzioni:

<?
    session_start();
    unset($_SESSION["autore"]);
    // Distrugge solo la sessione specificata
?>

oppure:

<?
    session_start();
    session_destroy();
    // Distrugge tutte le sessioni attive
?>
 

Scritto in data 15/01/2008

Segnalalo ad un Amico | Aggiungilo ai Preferiti

© 2008 Appunti PHP - A cura di Luca Ruggiero - Partita IVA 05564851219 - Privacy | Pubblicità | Contatti