Purtroppo non ho proprio quel codice, perchè lo utilizzai tempo fa per uno script realizzato per studio ed in una formattazione l'ho sbadatamente perso
![]()
Il principio comunque è quello di creare un frameset con un frame contenenti le pagine vere e proprie "di servizio" del sito, ed un altro di larghezza 1px (per farlo nascosto) e metterci dentro una pagina che:
1) si autorefresha ogni, che so, 5 minuti. Potresti usare la funzione header() oppure il tag <META> come feci io all'epoca.. la differenza fondamentale, in linea di massima, tra le due è che la prima non funziona se hai mandato anche solo uno spazio di output alla pagina, l'altra funziona sempre, anche in fondo ad una pagina piena.
2) Che aggiorna, con una query UPDATE, il timestamp relativo al tuo nomeutente (che dovrai passargli in qualche modo, ma quello dipende da come hai strutturato tu la tua area riservata)
3) Che fa una query SELECT sulla tabella "users_online" andando a ripescare i dati sull'ultimo timestamp di tutti gli utenti e che successivamente leva dalla tabella tutte quelle entries dove la differenza tra il timestamp salvato e quello attuale è maggiore di TOT (impostato da te)
4) Inserendo poi una semplice condizione IF puoi fare in modo che da quella pagina, se il nome del tuo utente è tra quelli cancellati (si presuppone per prolungata inattività), lo script reindirizzi alla pagina di logout.
Ovviamente, come già detto, si tratta di un metodo ampiamente perfettibile (si potrebbe per esempio implementare un controllo anche sull'IP address) con qualche difettuccio che credo si possa comunque arginare. Per quello che serviva a me andava abbastanza bene
PS: Con questo sistema, visto che la "pulizia" viene effettuata in un momento successivo, se per caso l'ultimo utente della giornata (ipotetico) chiude il browser senza fare logout il suo nome risulterà online fino al primo ingresso successivo... dove verrà comunque cancellato ^_*