Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Breve introduzione alle sessioni PHP

Cosa sono e in quali occasioni vengono usate le sessioni PHP
Cosa sono e in quali occasioni vengono usate le sessioni PHP
Link copiato negli appunti

Il protocollo che regola il "mondo Web", l'HTTP, è un protocollo senza stato ("stateless"). Ciò vuol dire che browser e Web server comunicano e si scambiano dati pagina per pagina, senza che il server sappia nulla di quali pagine siano state richieste nel passato da uno stesso utente, né avendo modo di sapere esattamente quale client si stia ad esso connettendo. Nella fattispecie, il server può solo conoscere indirizzo IP (od indirizzo IP del suo gateway) col quale la macchina client è connessa ad Internet* e tipo di browser/sistema operativo. E mai in modo affidabile.

Quanto detto implica che il Web server non ha modo (rif. HTTP 1.0, anche se poco realmente cambia
per l'HTTP 1.1) di limitare la visualizzazione delle pagine di un'ipotetica area riservata con un semplice log-in iniziale e senza dover richiedere un log-in per ciascuna pagina visitata.

PHP 4 e successivi, nell'intento di colmare questa lacuna, includono un sistema di sessioni. La base logica è la seguente: quando intendiamo creare una sessione per mantenere alcuni dati da noi ritenuti importanti al fine di riconoscere successivamente l'utente loggato (lo facciamo in genere dopo una sua procedura di log-in tramite username/password), PHP salva, lato server, un file di testo contenente tali dati. Esso rappresenta il file di sessione relativo all'utente autenticato.

Il nome del file di testo è una stringa alfanumerica casuale piuttosto lunga (32 caratteri alfanumerici), la quale stringa viene inviata al browser (trasparentemente all'utente ed al programmatore e sempre secondo il protocollo usato), di modo che, non appena l'utente richiederà un'altra pagina Web, il suo browser, re-inviando il nome della sessione al server, farà in modo che PHP sappia qual'è il suo file di sessione e quali dati associare a questa nuova richiesta ed all'utente.

La stringa identificativa della sessione, scambiata tra le parti, che punta al file su server prende il nome di SID, Session IDentifier.

Le metodologie con le quali il browser può inviare il SID al server sono tramite cookie (header HTTP) o query string (quindi come parametro in GET). I dati rimarranno associati all'utente remoto, per tutte le pagine future e fino alla distruzione della sessione stessa od alla chiusura del browser (in dipendenza della direttiva session.cookie_lifetime).

* Ricordo che l'indirizzo IP del client può non corrispondere a quello reale: può infatti essere "spoofato" oppure la connessione può passare per uno o più server anonimizzatori (vedi l'articolo Tor: una rete anonima per navigare sicuri). Nel caso invece di connessione "deviata" da proxy, si hanno due differenti comportamenti, dipendentemente dalla trasparenza dello stesso. Per proxy trasparenti $_SERVER['HTTP_X_FORWARDED_FOR'] contiene l'indirizzo IP del client; per proxy anonimi (e tanto più altamente anonimi) l'indirizzo IP visto dal server sarà quello del proxy, rimanendo quello del client completamente ignoto.

Ti consigliamo anche