[GDRCD 5.4.1] sloggare utenti inattivi
[GDRCD 5.4.1] sloggare utenti inattivi postato il 16/10/2018 21:03:28 nel forum programmazione, open source e hosting
Salve, mi trovo per le prime volta volta alle prese con gdrcd e mi chiedevo se non fosse possibile far scadere la sessione ad un'utente inattivo da un'tot di tempo.
Sono consapevole del fatto che se la pagina viene chiusa dopo 5 minuti è possibile fare il login nuovamente. Tuttavia se per sbaglio la pagina viene lasciata aperta e si tenta di accedere da un'altra postazione, questo non è mai possibile.
Ripetendomi quindi, esiste un modo perché la sessione scada anche se l'utente ha la pagina aperta?
Pagine → 1
16/10/2018 22:41:41
clarina88 ha scritto: Inattivo cosa significa per te? Perchè far sloggare l'utenza semplicemente perchè non fa un'azione in chat potrebbe essere troppo.
Dovresti dirci cosa intendi per utenza inattiva prima
Chiedo scusa per non essere stato più chiaro, intendo per utente inattivo qualcuno che semplicemente ha lasciato aperto la scheda del sito sul browser e non ha più interagito per un certo tempo.
16/10/2018 23:02:08 e modificato da raysmoke il 16/10/2018 23:07:50
Il logout è in PHP, e il PHP viene eseguito quando c'è una richiesta http. Anche se tu impostassi la scadenza della sessione sarebbe lo stesso discorso, finché l'utente non da un segno di vita, non c'è update.
L'unica soluzione che ti rimane è impostare un cron job, ma se hai posto questa domanda, dubito sia al tuo livello.
Se vuoi loggare da più postazioni e "sovrascrivere" l'accesso, tanto vale "forzare" il logout dell'account prima del login. Vedi se ci sono controlli sull'accesso e modificali di conseguenza.
Attenzione però, facendo in questo modo, permetti anche di loggare lo stesso pg da più postazioni nello stesso momento. E sopratutto, rendi più facile la vita agli scammer, perché se riescono ad accedere, il proprietario, non ha modo di accorgersene.
Personalmente ti consiglio di aggiungere un codice di sicurezza che conosce solo l'utente, e, in caso di login con l'account ancora attivo prima richiedi il codice, se corretto forzi il logout e vai con il login.
17/10/2018 13:13:33
Da quasi ignorante, la soluzione lunga e assolutamente intricata che partorisce il mio cervello per un dilemma del genere sarebbe: mettere una query in ogni pagina (tranne il layout), che aggiorna un nuovo campo con l'orario attuale. Poi mettere in una parte del layout che si refresha (come la lista presenti) un controllo che dice che se il nuovo campo è maggiore di X minuti, ora_uscita viene aggiornato. Così se l'utente torna in quella postazione dovrebbe dare "sessione scaduta" e al contempo permettergli di accedere da un altro dispositivo se ha dimenticato di sloggare. Ripeto, non sono un'esperta, ma io farei così >_<''
18/10/2018 00:44:51
raysmoke ha scritto: Il logout è in PHP, e il PHP viene eseguito quando c'è una richiesta http. Anche se tu impostassi la scadenza della sessione sarebbe lo stesso discorso, finché l'utente non da un segno di vita, non c'è update.
L'unica soluzione che ti rimane è impostare un cron job, ma se hai posto questa domanda, dubito sia al tuo livello.
Se vuoi loggare da più postazioni e "sovrascrivere" l'accesso, tanto vale "forzare" il logout dell'account prima del login. Vedi se ci sono controlli sull'accesso e modificali di conseguenza.
Attenzione però, facendo in questo modo, permetti anche di loggare lo stesso pg da più postazioni nello stesso momento. E sopratutto, rendi più facile la vita agli scammer, perché se riescono ad accedere, il proprietario, non ha modo di accorgersene.
Personalmente ti consiglio di aggiungere un codice di sicurezza che conosce solo l'utente, e, in caso di login con l'account ancora attivo prima richiedi il codice, se corretto forzi il logout e vai con il login.
Capisco, grazie per il consiglio. Cercherò di sperimentare un po', alle brutte lo lascio così com'è.
Grazie anche agli altri per l'aiuto ed aver contribuito.
18/10/2018 08:55:39
lilythdensie ha scritto: Da quasi ignorante, la soluzione lunga e assolutamente intricata che partorisce il mio cervello per un dilemma del genere sarebbe: mettere una query in ogni pagina (tranne il layout), che aggiorna un nuovo campo con l'orario attuale. Poi mettere in una parte del layout che si refresha (come la lista presenti) un controllo che dice che se il nuovo campo è maggiore di X minuti, ora_uscita viene aggiornato. Così se l'utente torna in quella postazione dovrebbe dare "sessione scaduta" e al contempo permettergli di accedere da un altro dispositivo se ha dimenticato di sloggare. Ripeto, non sono un'esperta, ma io farei così >_<''
E' una mattonata al server in termini di costi di risorse.
18/10/2018 11:01:05
lilythdensie ha scritto: ...
Come dice ray, aggiungere in misura obbligata una query per ogni pagina e' una cosa da fare solo in caso di reale necessita', perche' l'impatto prestazionale e' esponenziale ( num. query * num. utenti connessi * frequenza di cambio pagina utenti ).
Puoi pero' archiviare il dato nella sessione utente ($_SESSION) per ovviare sul fronte prestazionale.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
AlterEgo ↗
RAID Shadow Legends ↗
Neverness to Everness ↗