Di norma un utente loggato lo segnali in una varaibile di sessione ($_SESSION). Essendo la sessione basata su un coockie ed un file memorizzato sul server, resta di norma viva fino alla chiusura del browser.
Quello che mi pare di capire è che vuoi far vedere ad altri quali sono gli utenti loggati al sistema, quindi se un utente lascia il sistema gli altri se ne accorgono. Come avviene in questo forum.
A tal fine, quando un utente invoca una pagina, o se utilizzi ajax per fare chiamata asincrone, il tuo script dovrebbe fare
codice:
timeout = 300
Se utente loggato{
$esito_update = Fai l'update nella tabella (timestamp,id utente) con id utente loggato
se(!$esito_update){
Fai la insert della coppia (timestamp_attuale,id utente)
}
min_timestamp = timestamp_attuale - timeout;
Fai delete dei record in tabella (timestamp,id utente) in cui timestamp < min_timestamp
Ho in tabella l'elenco degli utenti teoricamente online
}
In questo modo un utente che agiorni la pagina (sincono o asincrono) può ricevere l'elenco aggiornato degli utenti collegati.
In realtà un utente potrebbe essere supposto scollegato perchè inattivo da 5 minuti mentre invece è lì che babba sulla pagina. Se però stai utilizzando ajax per aggiornamenti asincroni al più ogni 4 minuti in background, questo pericolo non esiste poichè il permanere sulla pagina provoca inconsapevolmente il refresh del proprio timestamp.