- Home
- Categorie
- Coding e Sistemistica
- PHP
- Logout alla chiusura del browser
-
Logout alla chiusura del browser
Sera a tutti,
Avrei bisogno di qualche dritta su come eseguire un logout automatico se l'utente chiude la pagina di internet senza effettuare il logout.
Grazie a tutti
-
Credo che se usi i cookie sia difficile, questi, a meno di cancellarli appositamente rimangono registrati nel computer dell'utente. Puoi eventualmente fare in modo che il cookie duri quel poco di tempo che basta a stare sul sito e quindi scada.
Altrimenti, e credo che sia cio
che fa per te, puoi usare le sessioni: si registra una sessione e si e
loggati solo il tempo che si sta sul sito, altrimenti la sessione scade o si chiude all'uscita.
-
@andrearufo said:
Altrimenti, e credo che sia cio
che fa per te, puoi usare le sessioni: si registra una sessione e si e
loggati solo il tempo che si sta sul sito, altrimenti la sessione scade o si chiude all'uscita.Si le sessioni gia le utilizzo.
Il problema rimane comunque perchè :
Ho strutturato il sito in modo che ad ogni login che l'utente effettua viene modificato un campo della tabella chiamato in_linea e mi imposta lo stato online dell'utente ( in questo modo conosco quante persone sono collegate al mio sito in quel momento ), come lo imposta offline nel momento in cui l'utente effettua il logout.Il problema sta proprio nel modificare la tabella quando l'utente chiude la pagina senza effettuare il logout.
-
Essendo un linguaggio server side e eseguendosi solamente quando un utente richiama la pagina specifica, per restituire il risultato della computazione, non credo sia strutturalmente possibile.
-
e allora come potrei fare per risolvere il problema degli utenti online ?
Un metodo c'è di sicuro, altrimenti anche sui social network come facciamo a ditinguere gli utenti in linea da quelli non in linea ?
-
Sicuramente il modo c'e` e probabilmente si potrebbe eseguire in javascript ma non saprei dirti come di preciso...
-
E' una parte del sito più complicata questa.
Ancora devo vedere una soluzione.
-
Ciao infosicurezza,
è un argomento che ho già affrontato diverse volte nel forum, la soluzione che adotto io è la seguente:- Ogni volta che l'utente apre una pagina aggiorno un campo della tabella con il timestamp corrente
Trascorsi X minuti li puoi già considerare offline.
Soluzioni in ajax per sapere in quale preciso secondo chiudono il browser sono sicuramente dispendiose in termini di risorse del server, e piuttosto inutili a mio avviso.
-
@Thedarkita said:
Ciao infosicurezza,
- Ogni volta che l'utente apre una pagina aggiorno un campo della tabella con il timestamp corrente
Trascorsi X minuti li puoi già considerare offline.
.
Aggiorni il campo della tabella relativo ad un unico utente.
Se l'utente rimane sul sito per 10 minuti senza cambiare pagina, si presuppone che ha abbandonato il sito giusto ? come fai ad effettuare una modifica alla tabella se quell'utente ormai non è più collegato?questo non riesco capire
-
Non è necessario sai che l'utente X ha visto l'ultima pagina alle 16:05 adesso sono le 17:00 sai che sono passati X minuti quindi è offline.
-
Quindi sommare gli utenti che hanno il timestamp al massimo entro 10 minuti da ora darebbe una indicazione (non esattamente) precisa delle utente online in quel momento.
-
Si, è anche quello che fanno tutti i forum ad esempio.
-
Potreste farmi un esempio di codice ?
io non capisco il senso se effettuo l'aggiornamento su un utente specifico perchè uso le sessioni.
-
Dovresti memorizzare il timestamp dell'ultima pagina visita nel database ovviamente.
-
@Thedarkita said:
Dovresti memorizzare il timestamp dell'ultima pagina visita nel database ovviamente.
Di uno specifico utente però giusto ?
-
Si ogni volta aggiorni quello dell'utente loggato.
-
il funzionamento è semplicissimo proprio come ha spiegato Thedarkita. C'è una guida al link: [mtxweb.ch/php_learn/?p=396] di Maurizio Tacchini che utilizza la programmazione orientata agli oggetti (OOP) per eseguire il tutto, è molto più comodo visto che il codice lo dovresti implementare in ogni pagina del tuo sito. La guida si basa però sulla classe che permette all'utente di iscriversi al sito spiegata in un'altra sezione dello stesso autore. Credo che l'iscrizione tu l'abbia già fatta, quindi ti consiglio di prendere spunto dalle funzioni ben spiegate e fare un nuovo oggetto.
-
@Longo8 said:
il funzionamento è semplicissimo proprio come ha spiegato Thedarkita. C'è una guida al link: [mtxweb.ch/php_learn/?p=396] di Maurizio Tacchini che utilizza la programmazione orientata agli oggetti (OOP) per eseguire il tutto, è molto più comodo visto che il codice lo dovresti implementare in ogni pagina del tuo sito. La guida si basa però sulla classe che permette all'utente di iscriversi al sito spiegata in un'altra sezione dello stesso autore. Credo che l'iscrizione tu l'abbia già fatta, quindi ti consiglio di prendere spunto dalle funzioni ben spiegate e fare un nuovo oggetto.
Così dovrei imparare qualcosa della programmazione ad oggetti.. e non credo di aver tempo
-
ciao,
allora ti basta fare una pagina a parte in cui inserirai le due query:- aggiorna il timestamp dell'utente che sta navigando;
- inserisce UTENTE USCITO nel campo degli utenti il cui timestamp supera i (tot) minuti scelti da te.
online.php
[PHP]
//1)
$time = time();
$sql = "UPDATE utenti_online SET ora=$time WHERE id_utente='$_SESSION[id]'";
//esegui query//2)
$sec= 300; /* 300/60=5 l'utente verrà ritenuto online se non aggiorna una pagina per almeno 5 min
Inserisci quanti minuti vuoi esprimendoli in secondi */
$sql = "DELETE FROM utenti_online WHERE ora+$sec<$time";
//esegui query
[/PHP]N.B. La pagina online.php deve essere inclusa in tutte le pagine del tuo sito.