Utilizzare le sessioni in PHP può essere molto utile in diversi casi, ad esempio se vogliamo creare unarea ad accesso riservato o un sistema di carrello della spesa o ogni altra applicazione web che ricordi le nostre precedenti azioni e, in particolare, i dati con cui ci siamo loggati o le pagine che abbiamo visitato.
Generalmente il nostro browser scambia delle informazioni col server, pagina per pagina, non cè quindi modo di sapere quali pagine sono state visitate in precedenze, quindi se non si usassero le sessioni, ad esempio, sarebbe impossibile creare unarea ad accesso limitato costituita da più pagine, altrimenti si dovrebbe richiedere un nuovo login per ogni pagina, operazione davvero impensabile.
Proprio per ovviare a questo limite strutturale del protocollo HTTP, dal PHP 4 in poi sono state introdotte le sessioni, che assieme allutilizzo di cookie permettono di creare aree riservate e sistemi di login e profilazione molto strutturati, basti pensare alle applicazioni sociali ultimamente molto di moda.
Se vogliamo utilizzare una sessione in PHP, salveremo dei dati di nostro interesse, per riconoscere l’utente loggato. Per ottenere questo PHP salva sul server un file contenente tali dati. Il nome di questo file è costituito da una stringa alfanumerica casuale di 32 caratteri, che viene scambiata tra browser e server per riconoscere lutente durante la navigazione.
Questa stringa rappresenta il SID, Session IDentifier che viene scambiato tra client e server durante tutta la sessione, attraverso vari metodi, luso di cookie o parametri passati alla pagina tramite GET.
I dati così scambiati rimarranno associati all’utente durante la sua navigazione, finche la sessione non verrà distrutta da un apposito comando, associato ad esempio ad un link log out, oppure finchè non verrà chiuso il browser.
A differenza dei cookie infatti, che vengono salvati sul client e possono restare per settimane o mesi in memoria, anche se viene più volte chiuso il browser o spendo il pc, nel caso delle sessioni, queste cessano con la chiusura del browser web.
Facciamo ora alcuni rapidi esempi di codice PHP.
Per avviare una sessione si usa: session_start();
Per salvare un valore, come ad esempio un nome utente, nella sessione, si usa la sintassi: $_SESSION[‘variabile’] = “valore”;
Potrete poi inserire nelle pagine della vostra area riservata un codice di questo tipo:
// Controllo accesso e avvio sessione
session_start();
if (!isset($_SESSION[‘variabile’]))
{
header(‘location:errore.php’);
exit;
}
// Il resto della vostra pagina qui
?>
Il codice va inserito allinizio di tutte le pagine da proteggere e permetterà di accedere solo a chi ha eseguito correttamente il login.
Naturalmente si tratta solo di un esempio, dovrete integrare questo sistema con la gestione degli account del vostro sito, quindi, ad esempio fare una query al vostro database degli iscritti per confrontare username e password inseriti con quelli degli utenti registrati.
Come si vede dallesempio in caso i dati non corrispondano si viene reindirizzati ad una pagina che, in questo caso, abbiamo chiamato errore.php, ma potrete semplicemente far apparire un testo con un messaggio di errore o quello che preferite.
Alla fine, se volete distruggere la sessione, il comando da usare sarà: session_destroy();