Newsgroup: it.lavoro.professioni.webmaster
Titolo: Vedere se un utente è online

Ciao a tutti,
ho un applicativo .asp (un gestionale) al quale l'utente accede tramite
user/password. Quando l'utente accede, carico anche una pagina in un frame
nascosto (che ogni 10 secondi viene automaticamente ricaricato) che aggiorna
un valore nel DB, indicante che l'utente è online.
In questo modo, posso sapere in ogni momento se l'utente è online oppure no.
Ovviamente quando l'utente si disconnette il valore nel DB non viene più
aggiornato.
Il problema è che il caricamento di questo frame nascosto non avviene
*totalmente* in background, ma IE mi mostra la barra di progressione (ogni
10 secondi).
Quali soluzioni esistono per evitare ciò? Avevo pensato ad alcune
alternative, ma non so' se sono applicabili o meno:
1) Al posto della pagina .asp che viene ricaricata (ed aggiorna il DB),
utilizzare un filmato Flash (mostrato in un frame nascosto) che ogni 10
secondi ricarica la pagina .asp di cui sopra; in questo modo non è IE che
ricarica la pagina, ma Flash, quindi non dovrebbe apparire la barra di
progressione
2) Al posto della pagina .asp che viene ricaricata (ed aggiorna il DB),
utilizzare una piccola applet java (mostrata in un frame nascosto) che ogni
10 secondi ricarica la pagina .asp di cui sopra; in questo modo non è IE che
ricarica la pagina, ma Flash, quindi non dovrebbe apparire la barra di
progressione
3) Al posto della pagina .asp che viene ricaricata (ed aggiorna il DB),
utilizzare una piccola applet java (mostrata in un frame nascosto) che ogni
10 secondi si connette direttamente al DB SQL e fa l'update; però non saprei
come dire all'applet di smetterla di fare l'update quando l'utente esce dal
sistema
4) Al posto della pagina .asp che viene ricaricata (ed aggiorna il DB),
utilizzare del codice VBscript che si connetta direttamente al DB SQL in
modo da aggiornare il db.
5) Varie ed eventuali?
Mi date qualche suggerimento? Sono proprio bloccato...
Grazie,
marcos

 modo da aggiornare il db.
quasi.
Io personalmente opterei per l'utilizzo degli eventi session_start e
session_end (se ben ricordo, perchè so la teoria di funzionamento ma non mi
è mai capitato di doverlo fare).
In pratica segni un utente come online quando comincia la sessione, e lo
consideri offline quando la sessione finisce.
Utilizzando gli eventi di cui sopra puoi operare varie operazioni per tener
traccia dello stato degli utenti: scrivere in un db, memorizzare i dati in
una variabile Application, etc
Certo che il "timeout" secondo il quale un user viene considerato offline
corrisponderà al timeout della sessione.
Se questi valori li vuoi differenti potresti fare una variazione in modo in
cui ogni pagina, ogni volta che viene caricata, aggiorna il "timestamp"
relativo a quell'utente, così puoi capire quanto tempo è passato dalla sua
ultima "azione" anche se per il sistema la sessione è ancora valida.
Eviterei francamente l'uso del frame nascosto: non è bello dal punto di
vista "estetico" e della programmazione, e ancor meno il flash. E poi è
"taroccabile" in molti modi. (disabilitando l'esecuzione dello script o del
refresh, modificando l'URL che viene richiamato, etc)

 refresh, modificando l'URL che viene richiamato, etc)
Questo non mi preoccupa molto... non è di vitale importanza, infatti l'admin
può scegliere se gli utenti devono essere tracciati. Però, se lo sceglie,
devono essere tracciati con molto precisione (max 30 secondi).
Ciao,
marcos

 
E se non ho flash?
Alla fine mi sa che ti conviene tenerti il sistema attuale.
Ciao
-- 
Danilo Bottone

 10 secondi si connette direttamente al DB SQL e fa l'update; perň non
