Impedire nuovo login se si è già loggati

radioButton

Utente Attivo
26 Dic 2013
35
0
6
Arezzo
Ciao a tutti,
sono un paio di giorni che mi sto interrogando sulla questione che vado ad esporre:
vorrei impedire ad un generico utente di loggarsi nuovamente se è già loggato; in prtica, per semplificare
al massimo la mia domanda vorrei che,se al momento del login, fosse già loggato qualcuno con lo stesso
username e password, mi venisse appunto impedito il login. Ho pensato di fare un controllo sull'esistenza
di $_SESSION['username'] in quanto al momento di apertura di una qualsiasi sessione l'array $_SESSION dovrebbe
essere salvato da qualche parte nel server ma dove? Oppure esiste una maniera specifica per impedire l'apertura di più sessioni da uno stesso utente? Oppure ciò che chiedo non si può fare?
Ringrazio tutti coloro che avranno prestato attenzione alla mia richiesta.
 

Lighty

Nuovo Utente
2 Apr 2014
29
0
0
Ciao radioButton,
premetto che non sono un esperto di PHP ma credo che in caso tu salvi le sessioni PHP in un database MySQL, basterà controllare l'esistenza di una sessione con le credenziali di chi sta tentando di fare login. Se invece tu stai usando il classico sistema delle sessioni, credo basti aggiungere al database degli utenti un campo con valori booleani. 0 significa che non è loggato, 1 significa che l'utente è loggato. Cambi il parametro ogni volta che l'utente fa login e logout. Tuttavia, siccome degli utenti chiudono il browser senza chiudere le sessioni, ovvero fare logout, per evitare che questo possa impedire l'accesso all'account al legittimo utente aggiungi un altro campo, con ora e data dell'ultimo login. In caso il primo campo risulti 0, il secondo viene ignorato. In caso risulti 1, il secondo campo viene preso in considerazione per stabilire se l'ultimo login è avvenuto più di una o due ore fa (comunque il tempo di scadenza di una sessione). In quel caso, l'utente può normalmente fare login. Poi, per abbreviare i tempi, si dovrebbero prendere in considerazione IP, user agent e altre informazioni che controllano se l'utente che sta tentando di accedere all'account senza prima aver terminato la sessione è realmente il proprietario dell'account.
Ripeto che sono inesperto, questo è soltanto ciò che mi è venuto in mente.
Spero di essermi spiegato correttamente.
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
L'idea di lighty è una valida soluzione al problema.
L'unica cosa che mi sento di aggiungere è di far si che la data che registri per l'utente non equivalga al suo ultimo login ma alla sua ultima attività sul sito (ultima pagina visualizzata).
In questo modo sei realmente certo che, se il tempo differisce più della durata di vita di una sessione, l'utente non è più loggato sul sito.