Ed eccoci arrivati ad una nuova lezione. Oggi parleremo delle sessioni, ossia lo strumento che utilizza PHP per memorizzare dati attraverso accessi consecutivi.
Cosa significa nello specifico? Ogni volta che accedete ad una pagina di un certo server, PHP vi assegna un numero univoco, che viene chiamato session id, ossia identificativo di sessione; tramite questo numero sarà possibile identificare ogni vostra richiesta come proveniente dalla stessa persona e quindi fornire all’utente la possibilità di accedere ad una serie di dati che vengono resi disponibili indipendentemente dalla pagina in cui ci si trova.
Questo esempio si compone di tre pagine (Scarica il codice), la prima, index.php è quella che si occupa di salvare i dati nella sessione:
La seconda, test.php visualizza gli eventuali dati presenti all’interno della sessione :
Quest’ultima invece, close.php, pulisce i dati salvati e chiude la sessione.
In ogni pagina che deve fare uso di un meccanismo delle sessioni, bisogna inserire all’inizio la chiamata a session_start(). Anche se il nome del metodo potrebbe far pensare che la sessione venga creata ogni volta, in realtà non è cosi perché chiamando questo metodo, se la sessione è già stata creata, si accede a quella esistente.
Nella lezione precedente abbiamo visto che PHP ci fornisce i due array $_GET e $_POST per accedere ai dati provenienti dalle richieste, ora possiamo vedere che abbiamo anche un’altro array, chiamato $_SESSION, che contiene le variabili di sessione.
E’ molto semplice leggere e scrivere queste variabili, infatti basta semplicemente fare riferimento ad una posizione dell’array $_SESSION come se fosse un qualsiasi array creato da voi.
Se volete forzare la chiusura di una sessione, tramite il metodo session_unset() effettuate una pulizia dei dati salvati in essa, mentre con session_destroy() chiudete definitivamente la sessione e non rendete più disponibili i suoi dati.
Per testare il codice di esempio e capire bene il funzionamento delle sessioni, fate questa prova:
- Aprite direttamente dall’url la pagina test.php. Se non avete mai aperto index.php dovreste vedere il messaggio di accesso non effettuato.
- Aprite index.php e poi test.php. Ora potete vedere i dati che la prima pagina ha salvato nella sessione. Ogni volta che aprirete questa pagina vedrete che gli stessi dati sono rimasti a disposizione.
- Da test.php passate a close.php. Ora la sessione è stata chiusa e i dati non sono più disponibili. Se aprite ora direttamente dall’url test.php dovreste vedere il messaggio di accesso non effettuato. Questo si ripeterà sempre fino a che non aprirete index.php che apre nuovamente una sessione salvando dati al suo interno.
Ovviamente la sessione non ha una durata infinita, di default dopo 24 minuti dall’ultima richiesta effettuata, l’interprete considera la sessione scaduta e ripulisce il suo set di variabili salvate. E’ possibile modificare la durata di default delle sessioni attraverso il file di configurazione di PHP (php.ini) impostando il valore della proprietà
session.gc_maxlifetime
al numero dei secondi dopo i quali si vuole far scadere la sessione.
La gestione delle sessioni è una di quelle features che è stata molto modificata e risistemata durante lo sviluppo del linguaggio, per questo in base alla versione di PHP che utilizzate o a certi parametri di configurazione che potreste avere impostato sul vostro server, il codice di questo esempio potrebbe non funzionare come vi aspettate. In questo caso date un occhiata a questa pagina per capire come potrebbe cambiare la gestione delle sessioni nel vostro caso specifico.
Continuate a seguirci!
LEZIONI PRECEDENTI:
11 Dicembre 2007: Introduzione
17 Dicembre 2007: Installazione di una piattaforma LAMP su Ubuntu Linux
18 Dicembre 2007: Dentro l’HTML
20 Dicembre 2007: E tu di che tipo sei?
7 Gennaio 2008: Operiamo?
10 Gennaio 2008: Ed ecco gli Array
17 Gennaio 2008: Controllare l’esecuzione (1)
25 Gennaio 2008: Controllare l’esecuzione (2)
4 Febbraio 2008: Le Funzioni (1)
6 Febbraio 2008: Le Funzioni (2)
11 Febbraio 2008: Lo scambio dei dati
di Rocco Zanni - TuxJournal.net
Rocco Zanni Blog