Sii molto molto attento a questo. Assicurati di avere un timeout di sessione inattiva e di sapere di cosa si tratta. Documentalo. Anche configurabile sarebbe bello.
Il motivo per cui questo è pericoloso sul web è che il ciclo di vita di una sessione non è così semplice come sembra. Le persone tendono a valutare le sessioni sulla base del percorso felice. L'utente accede, quindi si disconnette.
Ma alcune cose da considerare:
- Quando inizia una sessione? Le sessioni non iniziano al login. Iniziano alla prima richiesta HTTP. Anche se l'accesso è la prima pagina visitata, che succede se 100 utenti visitano il sito ma, invece di effettuare il login, partono? Hai 100 sessioni che sono essenzialmente "perse".
- Che cosa succede se gli utenti non si disconnettono, ma semplicemente chiudono il browser?
- Un utente può accedere allo stesso account utente da due diverse sessioni HTTP? In caso contrario, cosa succede se la sessione esistente non è più attiva. Se un utente ha effettuato l'accesso, chiuso il browser, ha riavviato il browser, non sarà in grado di accedere fino a quando la sessione precedente "scade" sul server Web.
Ho visto alcune di queste preoccupazioni gestite. Si può fare. Ma è complicato, quindi fai attenzione.
Se si sceglie il conteggio degli accessi e delle disconnessioni nell'approccio al database, si hanno ancora alcuni degli stessi problemi. Cosa succede se un utente non si disconnette mai, ma la sessione scade? Ho visto questo risolto in Java EE definendo un SessionBindingListener, in modo che quando una sessione scade, possiamo andare al database e invalidare il loro login. Non sono sicuro che PHP possa fare la stessa cosa. Poiché il codice PHP viene richiamato solo quando arriva una richiesta HTTP, dubito che possa essere fatto. Ma io non sono un esperto di PHP.