Corso PHP/ Lezione 12: Le sessioni

Cosa sono le sessioni? Come si usano in PHP? A questi ed altri interrogativi risponderemo in questa ultima lezione del nostro corso

Nella lezione dedicata all'uso dei cookies abbiamo visto che essi, consentendoci di rendere persistenti delle variabili nell'arco di più accessi HTTP, possono essere sfruttati per il mantenimento di un rudimentale stato. Il meccanismo dei cookies, tuttavia, presenta delle limitazioni intrinseche che lo rendono inadatto ad applicazioni complesse. Un esempio per tutti: vogliamo essere in grado di mantenere uno stato anche nell'eventualità in cui il browser del visitatore non supporti i cookies (o li abbia disabilitati).

Arriviamo così a parlare di sessioni. Precisiamo subito che il supporto nativo per le sessioni è stato introdotto nella versione 4 di PHP; se si ha necessità di gestire le sessioni con la versione precedente sarà necessario ricorrere ad apposite librerie, come ad esempio le ottime PHPLIB. Cominciamo con l'esaminare alcune nozioni di base sulle sessioni.

Una sessione, in questo contesto, consiste di una serie di accessi alle nostre pagine PHP, effettuati in un determinato arco di tempo durante il quale viene mantenuto uno stato. Ogni sessione è individuata da un identificatore, univoco, utilizzato per l'associazione tra client e relativa sessione.
Per utilizzare le sessioni in PHP 4 abbiamo bisogno essenzialmente di tre funzioni, e precisamente: session_start(), session_register() e session_destroy().

La prima funzione, session_start(), viene invocata per creare una nuova sessione o per ripristinarla, nel caso sia stata creata in precedenza. Questa funzione tenta anche di impostare, nel browser, un cookie contenente l'identificativo di sessione, per cui è necessario che venga invocata all'inizio degli script, esattamente come nel caso della funzione setcookie().

La funzione session_register(), invece, viene utilizzata per registrare delle variabili come variabili di sessione. Ad esempio, se abbiamo una variabile $nomeutente e vogliamo renderla persistente per tutta la durata della sessione, invocheremo session_register() nel modo seguente

// $nomeutente diventa variabile di sessione
session_register("nomeutente");


Infine, la funzione session_destroy() viene invocata per distruggere i dati relativi alla sessione, tipicamente al momento del "log out".

Come si vede, quindi, lavorare con le sessioni è piuttosto semplice. L'unico aspetto critico, al quale il programmatore deve prestare la massima attenzione, è quello della propagazione del SID, il già citato identificatore di sessione. Sebbene, infatti, nella maggior parte delle situazioni reali, sarà sufficiente memorizzare tale valore in un cookie nel browser del visitatore (PHP lo fa automaticamente), è opportuno gestire anche il caso in cui i cookies non possano essere utilizzati (perché il browser non li supporta o è stato configurato per rifiutarli).

In questo "caso pessimo" è il programmatore PHP che deve preoccuparsi della propagazione del SID, modificando i link tra i vari script che condividono la sessione e passandolo come parametro. A dispetto di quanto possa sembrare, si tratta di un'operazione piuttosto semplice: basta includere nei link alle altre pagine PHP il valore della costante SID, come nell'esempio seguente:

<!--
Un esempio di link che propaga l'identificativo
di sessione senza richiedere cookies
-->
<a href="altroscript.php?<?= SID ?>">Altro script</a>
8 Commenti alla Notizia Corso PHP/ Lezione 12: Le sessioni
Ordina
CONTINUA A LEGGERE I COMMENTI
Successiva
(pagina 1/2 - 6 discussioni)