Newsgroup: it.comp.www.php
Titolo: Come fare un "who's online"?

O meglio, l'ho giŕ fatto :D
Sembra funzionare tutto, quando viene aperta una pagina del sito viene
aggiornata una tabella mysql con dentro i dati che mi interessano (ora di
ingresso, ora ultimo click, ultima pagina ecc ecc)
Il problema č perň quello dell'eliminazione delle persone che non sono +
dentro al sito.
Ora come ora vengono cancellate le entries + vecchie di X minuti.
Ma stavo pensando: ogni persona che entra ha il suo id di sessione, potrei
salvare anche quello dentro alla tabella mysql e tutte le volte che analizzo
il who's online verificare che quella sessione sia ancora registrata.
2 problemi:
- come faccio a sapere quali sono le sessioni registrate sul server?
- la sessione rilasciata dal "mio" utente potrebbe essere stata registrata
(intendo lo stesso id..) da un utente di un altro sito, e questo mi
scombussolerebbe tutto.
Soluzioni?
Grazie :)
PS: anche cosě funziona come si deve, ma ormai č una malattia quando mi
viene un'idea devo risolvere :D

 sono + dentro al sito.
http://it.php.net/manual/it/function.session-set-save-handler.php
Buono studio.
-- 
I'am what I'am, I do what I can

Massi wrote:
modo semplice ma un pň buggoso:
tabella temporanea (id_utente, timestamp)
definisci un timeout dopo il quale un utente non viene piů considerato 
online
ad ogni accesso alla pagina, aggiorni il record col nome utente al 
timestamp attuale
per visualizzare gli utenti connessi prendi dalla tabella temporanea 
tutti gli utenti con un timestamp "vicino" all'ora, con "vicino" scelto 
in base alle esigenze
ciao
Alesi_27

 online
Questo è quello che faccio ora.
Mi chiedevo come si potesse fare una cosa + precisa, quindi controllando
quando una sessione viene chiusa.
Setec dice il set save handler... vedrò se ci capisco qualcosa :)

 
http://it.php.net/manual/it/function.session-set-save-handler.php
Azz che manata!
In pratica devo riscrivermi tutta la gestione delle sessioni??
Possibile che non ci sia modo di sapere quali session id sono registrati sul
server?

 Setec dice il set save handler... vedrò se ci capisco qualcosa :)
si, è più elegante, meglio gestibile. ma il concetto non cambia, devi 
ricorrere al timeout. d'altra parte il tuo server non può sapere se l'utente 
ha chiuso il browser o no. quindi "tu supponi" che dopo 10 minuti che non 
chiede più nessuna pagina non sia più interessato al sito.
Ciao
-- 
Ranger! 
www.rossi.eu.com
aggiungi .it alla mail x rispondermi

 sito.
Perň quando io chiedo di vedere la pagina dei who's online il server sa se
la sessione con id xxxxxxxxxxxxx č ancora attiva o no.. come faccio a
chiederglielo? :)

 chiederglielo? :)
veramente "non lo sa".
cioč se tu apri il browser e il server ti da PHPSESSION=1234
dopo un pň di navigazione chiudi il browser ...
e il server come fa a sapere che l'hai chiuso?
"per lui la sessione ancora esiste", finchč esplicitamente non la chiudi 
da dentro codice php
ciao
-- 
Ranger! aggiungi .it all'indirizzo per rispondermi via mail
www.rossi.eu.com

 e il server come fa a sapere che l'hai chiuso?
Il che mi fa venire un'idea: su tutte le pagine, nel body un onClose
(se esiste, forse onUnLoad?) che chiama una pagina che chiude
la sessione. Ovviamente complementare al timeout, poiché in
alcuni casi non sarebbe eseguito.
-- 
Valerio Granato
http://www.musicoff.com
 - Music Online For Free
La Grande Comunità Online per Musicisti

 PS: anche così funziona come si deve, ma ormai è una malattia quando mi


 vorrei solo avere una visione dell'impostazione :-)
Ti aiuterei anche avessi capito cosa cerchi :)

 ha scritto nel messaggio
news:Bbhfb.19282$Zh....@tornado.fastwebnet.it...


 le idee un po' più chiare...
No, ti spiego: le sessioni le gestisce il php, nella tabella io scrivo solo
i dati che mi interessano e il session id.
PErchè il session id?
Perchè ogni volta che viene caricata la pagina il codice controlla se nella
tabella c'è già un entry con quel sid, se c'è aggiorna i campi che deve e
non l'orario di ingresso, sennò inserisce una nuova entry.
Come vedi ha ben poco a che fare con la gestione delle sessioni...

 quando una sessione viene chiusa.
Quando l'utente fa logout, cancellalo dalla tabella.
Se non fa logout, comunque ci sara' il timeout.

 ha scritto nel messaggio
news:zmmfb.19890$Zh....@tornado.fastwebnet.it...

Si, hai ragione... In effetti avevo capito male: pensavo gestissi le
sessioni con mysql, nel qual caso mi sarebbe piaciuto dargli un'occhiata.
Se qualcuno mi sa indicare qualche fonte a cui attingere per le sessioni
alternative, mi fa una cortesia.
Ciao e grazie lo stesso, Carlo.