Newsgroup: it.comp.www.php
Titolo: Controllare l'uscita di un utente

Chiedo aiuto per un problema.
Al momento dell'accesso di utente, viene generalo un db su mysql.
Vorrei cancellare il db nel momento in cui l'utente esce dal sito oppure se
chiude il browser.
Ho tentato in javascript con if(exit) ma la cosa necessita di un frame
altrimenti viene rilevata un uscita ad ogni cambiamento di pagina.
Potrebbe essere utile generare un cookie al momento dell'accesso, ma in che
modo ne controllo l'uscita ?
Oppure esiste una più semplice variabile di PHP ?
Chi mi dà una idea ?
Grazie.

 Chi mi dà una idea ?
Mica facile!
La soluzione piu' usata e' quella di assegnare un timeout in modo che dopo
x secondi il database venga cancellato automaticamente.
Oppure potresti cercare di fare un ping sul computer dell'utente, ma non
e' detto che funzioni (ZoneAlarm per esempio potrebbe bloccarlo), genera
un sacco di traffico e non e' garantito che tra un ping e l'altro l'utente
non si disconnetta lasciando il modem a qualcun altro.
Il bottoncino "DISCONNETTI" non e' raccomandabile: la gente se lo
dimentica sempre, lo so per esperienza...
Prova a vedere se trovi qualcosa sulla modalita' server-push che si usava
anni fa per fare le animazioni in CGI: magari potrebbe darti qualche altra
idea.
ciao
-- 
Marco Bernardini
bernama chiocciola libero it


sfrutta la filosofia dei siti porno con i popup ! :)
metti che alla chiusura di una finestr asi apra un piccolo popup che esegue
la cancellazione del db ! :) e ci scrivi grazie per averci visitato ! :)
No?
--
--
+ --------------------------------------- +
           .:.   FrOiD  .:.
**********************************
Chi è pronto a rinunciare alle
proprie libertà fondamentali
per comprarsi briciole di
temporanea sicurezza non
merita nè la libertà
nè la sicurezza"
              Benjamin Franklin
**********************************
ICQ: 25876612

Grazi a tutti per le idee fornite.
Sě, un pop-up che vada ad eseguire la cancellazione del db nel momento in
cui l'utente abbandona il sito o chiude il browser č la soluzione da
adottare, ma il problema č proprio... rilevare quel momento !
Come dicevo questo si puň facilmente fare con due righe in javascript, ma č
indispensabile utilizzare almeno 2 frames e cioč, uno che mantiene...
diciamo... "agganciato" l'utente ed un altro dove invece avviene la
navigazione. Questo si rende necessario perchč, altrimenti, ogni cambio di
pagina verrebbe rilevato come abbandono con relativa cancellazione del db.
Altra soluzione č quella, come indicava Marco, di un timeout. Credo che si
possa fare memorizzando l'IP dell'utente sul db ed al primo accesso di ogni
nuovo utente, verificare se gli IP memorizzati sono ancora collegati oppure
no ed, in caso negativo, procedere con la cancellazione del db.
In parole povere, utilizzare la stessa tecnica degli "user on-line", quei
contatori che verificano il numero degli utenti collegati contemporanemente
su un sito.
Questo č il mio pensiero.
Consigli e commenti saranno ben accetti in qualsiasi momento.
Ciao a tutti. Lucky Luciano

 pagina verrebbe rilevato come abbandono con relativa cancellazione del db.
il timeout dal mio punto di vista... è antipatico ... da morire !


 no ed, in caso negativo, procedere con la cancellazione del db.
secondo me questa e' la strada buona... associ ad ogni db un timeout che 
mantieni aggiornato ad ogni accesso, periodicamente controlli quali db 
hanno sforato e li fai fuori
just my 0.02 euro
ciao

 il timeout dal mio punto di vista... è antipatico ... da morire ! --
Infatti in questo momento ho un utente che risulta in linea da 2 giorni
perche' non ha schiacciato "disconnetti", e non posso pingarlo perche' e'
dietro un firewall. Sono sicuro che non e' collegato perche' la luce in
ufficio e' spenta, ma la cosa non e' traducibile in PHP!


E se l'utente butta giu' la linea con il browser aperto, come la mettiamo?
Su un server tuo (perche' il carico e' notevole) puoi usare un frame
nascosto, invisibile, con refresh di 5 secondi, che mantiene UPDATED
una colonna datetime.
E a quel punto, puoi cancellare tutti gli utenti dove quella colonna
e' piu' vecchia di 6 secondi.
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.


anche io ho utilizzato questo sistema, se vuoi ti mando la funzioncina
semplice e veloce..
cancella dal DB dopo un ASSENZA DI REFRESH di almeno 5 minuti, ma puoi
cambiare il timeout se ti serve piu' dettagliata, ma sappi che a volte
l'utente rimane con la pagina aperta per piu' tempo di 5 minuti
TWiN

 ha scritto nel messaggio
news:TmUE9.2488$yy.3...@newsread1.prod.itd.earthlink.net...
:
:
: anche io ho utilizzato questo sistema, se vuoi ti mando la funzioncina
: semplice e veloce..
Nel frattempo ne stavo sviluppando una anche io, ma sarň felice di
confrontarla con la tua.
: cancella dal DB dopo un ASSENZA DI REFRESH di almeno 5 minuti, ma puoi
: cambiare il timeout se ti serve piu' dettagliata, ma sappi che a volte
: l'utente rimane con la pagina aperta per piu' tempo di 5 minuti
:
Il refresh si puň anche allungare a mezz'ora o piů, non ha importanza.
Poi, una volta testata, potrň farti sapeare com'č andata...
Ciao, Luc