Quote Originariamente inviata da M4V1 Visualizza il messaggio
Se vuoi che l'utente non possa essere loggato da più postazioni contemporaneamente puoi salvarti nel db all'interno dell'oggetto utente l'id di sessione (in fase di login) e fare un controllo solo su quello. In ogni pagina in cui l'utente deve essere autenticato controlli se l'id della sessione e quello sul db sono gli stessi, in quel caso è tutto ok, se invece non è così consideri nulla l'autenticazione, ripulisci sessione e campo del database e fai effettuare il login nuovamente. Ovviamente in fase di logout devi cancellare sia la sessione sia il campo del db dove hai salvato l'id di sessione.

Così, nel caso che mi hai descritto, se un utente lascia il browser aperto con una sessione attiva in ufficio/facoltà una volta arrivato a casa invaliderà quella sessione semplicemente facendo il login da una postazione diversa, senza bisogno di cambiare password.

Su questi argomenti sono un po' arrugginito perché negli ultimi anni usando i framework il processo di autenticazione spesso lo tocco a fatica, ma non credo di averti detto cazzate
Lo avevo pensato, ma io uso il session regenerate id, quindi non credo si possa fare perchè cambia sempre ad ogni azione.
Avevo pensato invece a memorizzare ad ogni login l'user agent con
Codice PHP:
$_SERVER['HTTP_USER_AGENT'
memorizzare tutti gli accessi dai vari dispositivi, ad ogni azione viene fatto un controllo se esiste l'user agent altrimenti termina la sessione.
E poi dare la possibilità all'utente di disconnettere tutti i dispositivi semplicemente cancellando tutti i record sul database.
E'giusto come ragionamento? E soprattutto l'user agent è univoco o possono esisterne di uguali?