Mi sono letto tutte le 11 pagine di post relativi agli script per elencare gli utenti online. Alla fine il metodo usato è uno solo:
1) inserisco un record su una tabella per ogni utente che effettua il login
2) ad ogni richiesta di pagina effettuo l'update del timestamp dell'utente
3) ad ogni richiesta di lista degli utenti online elimino tutti i record che hanno il timestamp più vecchio di un certo timeout.
La mia esigenza è però quella di scrivere un software in php ma che non sarà propriamente un sito web. sarà un piccolo softwarino che gira in rete locale, ed è molto probabile che un utente si logghi e lasci la sessione aperta per molte ore senza richiedere nessuna nuova pagina. se anche impostassi un timeout di 2 ore non andrebbe bene, quindi. E in ogni caso con un timeout così ampio la lista degli utenti online non sarebbe mai veritiera.
Quello che mi chiedo io è:
nel momento in cui un utente effettua il login prendo dalla tabella utenti l'ID del record dell'utente, e inizializzo una varaibile di sessione $_SESSION[id_utente] = id_del_database. Supponiamo che il mio utente abbia $_SESSION[id_utente] = 3. Supponiamo ora che il mio utente chiuda il browser con la X, senza quindi effettuare un logout pulito.
Non è possibile, lato server, capire se tra tutte le variabili $_SESSION[id_utente] = qualcosa che ci sono, ce ne sia una uguale a 3? In questo modo capirei se l'utente è ancora online senza usare un timeout.
Grazie per qualsiasi suggerimento
Ciao