Newsgroup: it.comp.www.asp
Titolo: log delle visite

Ciao a tutti
Costruendo un meccanismo di monitoraggio degli accessi al sito attraverso la
costruzione di un file di log, mi sono imbattuto nella difficoltà di capire
quando viene abbandonata l'ultima pagina visitata, per avere così un tempo
totale di visita. Avevo pensato di utilizzare la sub Session_OnEnd del
global.asa per aggiungere una riga nel log.txt ma non funziona (se per prova
metto la procedura nel Session_OnStart funziona a meraviglia ma non mi è
molto utile...). Qualcuno conosce un altro modo per ottenere la stessa
informazione?
Grazie

quando viene abbandonata l'ultima pagina visitata, per avere così un tempo
credo che sia impossibile farlo, per il semplice fatto che il client
non dice in nessun modo al server "ciao, guarda che me ne sto
andando...".  il client chiede dati al server, poi smette di
chiederglieli, ma poi glieli può richiedere...
-- 
non studio non lavoro non guardo la tv
non vado al cinema non faccio sport

 molto utile...).
Cosa vuol dire non ti funziona?
Fai attenzione che l'evento Session_OnEnd può avvenire anche dopo 20 min,
dipende come è configurato il server.
Ah un'altra cosa: non è possibilire richiamare il metodo MapPath in
Session_OnEnd.
ciao
--
Kappa
ka...@webngo.net
www.webngo.net

 totale di visita. ...
Allora io ho fatto così (anzi la cosa può essere utile a tutti):
ho creato un tabella nel db (io uso SQL SRV ma può essere utilizzato
qualunque db) con nome "sessioni" in cui ho i campi:
SessionID [varchar]
time_in [datetime] ( con default = now() )
time_out [datetime]
nel global.asa poi ho inserito in "session_onstart()":
...apro la connessione al db...
sql="insert into sessioni (sessionid) values ('" & session.sessionid & "')"
connessione.execute(sql)
...chiudo la connessione...
in "session_onend()" invece:
...apro la connessione al db...
sql="update sessioni time_out={ fn now() } where sessionid='" &
session.sessionid & "'"
connessione.execute(sql)
...chiudo la connessione...
Il tutto funziona (testato da me stesso) e il tempo di log lo puoi dedurre
dalla differenza dei due campi time_in e time_out.
Poi la chicca sta nel fatto che ho scoperto contemporaneamente anche un
sistema per bypassare i problemi di date inglesi, americane, italiane,
giapponesi, ecc..
Se noti la stringa sql di chiusura infatti imposta la data nel campo
time_out utilizzando la funzione now() di SQL Server; facendo così inserisco
la data del momento nel formato che più gli piace a SQL SRV. Si può fare
anche in access ma non ho ancora provato.
Ciao
Marino
--
Per rispondermi in privato, togliere ".zerospam" dall'indirizzo.

 totale di visita. ...
Allora io ho fatto così (anzi la cosa può essere utile a tutti):
ho creato un tabella nel db (io uso SQL SRV ma può essere utilizzato
qualunque db) con nome "sessioni" in cui ho i campi:
SessionID [varchar]
time_in [datetime] ( con default = now() )
time_out [datetime]
nel global.asa poi ho inserito in "session_onstart()":
...apro la connessione al db...
sql="insert into sessioni (sessionid) values ('" & session.sessionid & "')"
connessione.execute(sql)
...chiudo la connessione...
in "session_onend()" invece:
...apro la connessione al db...
sql="update sessioni time_out={ fn now() } where sessionid='" &
session.sessionid & "'"
connessione.execute(sql)
...chiudo la connessione...
Il tutto funziona (testato da me stesso) e il tempo di log lo puoi dedurre
dalla differenza dei due campi time_in e time_out.
Ovviamente session_onend terminerà dopo i minuti di timeout, se nessuno fa
niente.
Ti troverai quindi comunque, come tempo minimo, il tempo di timeout
(default=20').
Vedi tu se impostarlo più breve o no.


connessione.execute(sql)
------------------------
Purtroppo non ho modo di usare db di qualsiasi genere e sto usando un file di testo.
Il codice che provo da giorni h
sub Session_OnEnd
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile ("statistiche/log.txt",8)
objApriFile.Write Now&";"
objApriFile.Write Session.SessionID&";"
objApriFile.Write "id;"
objApriFile.Writeline "fine;"
objApriFile.close
Set objApriFile = Nothing
Set objFileSy = Nothing
End Sub
Nessun segno di vita...
--
Enjoy the .NET community! ASPItalia.com
 
http://forum.aspitalia.com/
 
http://www.aspitalia.com/

 Nessun segno di vita...
Cosa vuol dire "nessun segno di vita":
che apre il file ma non scrive niente?
che non apre proprio il file?
che la session_onstart va e la session_onend non va? immagino che sai gia'
che la session_onend si "attiva" non prima del timeout (default=20')...
che da' errori, segnalazioni, avvisi, qualcosa?
