Effettuare il log out alla chiusura del browser

di il
5 risposte

Effettuare il log out alla chiusura del browser

Ciao raga. Ho un problema e credetemi ho provato 3 giorni prima di postare qui per chiedere un aiuto!
Allora nel mio sito voglio implementare uno script che mi consente di:
1) Quando l' utente chiude il browser (o si chiude xke gli esplode il computer), deve effettuare il logout aggiornando il db e distruggergli la sessione!
Ho letto di cron ma funzia solo su linux e io vorrei fare in modo di usare un metodo che metta d'accordo il pingu e la finestra.
2) Ho fatto taaaaante prove e questa e' quella che piu' si avvicina. Ho creato uno script che sfrutta gli utenti che navigano sul sito. Ogni volta che un utente fa un passo, lo script legge una variabile di quelli che hanno effettuato il login aggiornandola. Se un utente sta fermo per tot tempo lo script vede che nn fa un niente di niente e lo setta a 'out' e se l'utente ritorna e si muove la sua sessione viene distrutta!
Voi direte: "e se funziona e lo hai gia' fatto che ci stai a rompere??"
Ma c'e' un ma'!!! (sempre sti cavolo di ma! :nonlodire ).
Se l'utente legge qualcosa sul sito, lo script nn lo sa che e' ancora li che guarda e nn tocca niente come un bimbo diligente, lo conta come se fosse andato a fare un bel po' di pipi' per poi dimenticarsi il browser aperto mentre e' fuori con il cane ke gli fa fare i bisogni.
3)Ma mentre e' fuori con il cane un meteorite colpisce casa sua e il suo browser si chiude senza cliccare sul tasto del logout. Dato che non riesce a stare senza il mio sito, intanto che casa sua con tutti i suoi familiari dentro brucia, lui corre al primo internet point per collegarsi ma per sua disgrazia vede che ancora risulta loggato e quindi nn puo' accedere se nn aspetta quel tempo settato nel mio script (se e' poco lo caccia mentre sta fermo, se e' tanto lui risulta in ancora in linea pur nn essendoci realmente).
RIASSUMENDO: Quindi il mio problema e' questo =
Come diavolo faccio a dire al php: "senti quell' utente (o il meteorite) ha chiuso il browser quindi mo tu setti sta' variabile ne db e gli distruggi la sessione! cosi' posso tornare a dormire!!! :dhò: e l' utente puo finalmente riconnettersi per finire di leggere sul mio sito in pace!! :yuppi:

5 Risposte

  • Re: Effettuare il log out alla chiusura del browser

    Ciao quasta problematica è abbastanza comune, esistono diverse soluzioni, nassuna è ottima ma una toppa è sempre meglio di niente.
    Fermo restando che le applicazioni web si basano sul concetto di richiesta->risposta, è implicito che se si stacca il cavetto di rete dal client, se si impalla o comunque si interrompe la comunicazione col server, quest'ultimo non può saperlo.
    Ti propongo una soluzione Ajax.
    Fai uno script integrato nell'interfaccia delle pagine web che richiama tramite timer (ogni tot secondi), uno script PHP dove tu rinnoverai un'informazione di sessione (ad esempio una data) che per te significa che l'utente è ancora online.
    Cosi facendo riuscirai a discriminare un browser aperto sul tuo sito, da uno chiuso o non più utilizzabile.
  • Re: Effettuare il log out alla chiusura del browser

    Mmm quindi tu dici :
    Script che mi controlla la data attuale da quando si connette l'utente.
    ogni tot secondi facciamo 30sec lo script si esegue.
    L'utente si muove nel sito e aggiorna la sua di data (sarebbe quella di entrata + now() ).
    e lo script vede che lui si sta muovendo.
    Pero' c'e' un problema....se lui si mette a leggere qualcosa e nn tocca niente.....lo script sente che nn fa niente e lo butt afuori....
    credimi ne ho provate tante da avere il cervello in pappa e nn essere piu' tanto lucido...
  • Re: Effettuare il log out alla chiusura del browser

    Lo script ogni 30 secondi fa "diciamo ping" del server e gli dice che la pagina è aperta e il client è operativo.
    Se vuoi capire se l'utente pur non cambiando pagina si muove all'interno della stessa, potresti gestire l'evento onmousemove... diciamo che se si muove il puntatore del mouse nello schermo crei una qualche interazione col tuo script ajax di controllo.. gli puoi in pratica comunicare che all'istante T1 c'è stato un evento lato client.
  • Re: Effettuare il log out alla chiusura del browser

    Be cmq a discorsi fatti ormai ho deciso di nn effettuare questo controllo e mi tengo solo quello di onlnie on/off....speriamo si potra' fare qualcosa in futuro...thanks a tutti per la chiaccherata!!
  • Re: Effettuare il log out alla chiusura del browser

    Grande, a volte è inutile sbattersi troppo su queste cose.... alla prossima!
Devi accedere o registrarti per scrivere nel forum
5 risposte