Newsgroup: it.comp.www.asp
Titolo: [FORSE OT] Script per statistiche

Sto sviluppando uno script che messo in una pagina ASP mi registra in
un DB ora, giorno, IP, nome della pagina, Sistema operativo, e browser
dell'utente che la visita.
E mi tiene traccia della SessionID per farmi vedere le pagine che ha
visitato.
Solo che ho MOLTE visite da parte di motori di ricerca. E quelli hanno
"nomi di browser" moooolto strani e non mantegono la stessa
SessionID... quindi mi sballano tutto...
Come fare per registrare solo visite di persone reali?

 ha scritto nel messaggio
news:d1buevc9aave6m5vo...@4ax.com...

scusa una domanda ma non puoi accedere ai log del server? In quanto lě hai
tutti i dati completi senza dover rifare un doppione
-- 
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

tutti i dati completi senza dover rifare un doppione
Come faccio? Io ho un dominio sotto aruba.....

puoi usare un semplice trucco.
quando un  visitatore arriva sul sito, prendi il suo ip e controlli se e'
presente nel DB. se lo e', controlli l'ora registrata precedentemente nel db
e ne fai la differenza con l'ora attuale. se si superano i 20 minuti (questa
poi sara' una tua scelta), la visita e' da considerarsi come una nuova
visita, altrimenti non adrai a far altro che aggiornare i dati gia' inseriti
nel DB.
Se e' una nuova visita, puoi creare anche una sessionid per conservare i
dati. in modo da non essere obbligato a controllare sempre la presenza di un
ip nel DB.
Questo problema sorge dal fatto che alcuni browser (e alcuni programmi dipo
i crawler) non permettono la registrazione di cookies e quindi non si riesce
a tener traccia della sessione.
Comunque, eccoti la struttura che mi sono creato:
(crea una connessione al db prima)
If Not Session("DomainLog") Then     'nel caso in cui non sia stata creata
una sessionid, oppure nel caso in cui non sia possibile crearne (e quindi
ereditarle nelle successive richieste)
  Set UserConnInfos = LogSystemConn.Execute("Select [LastHit],id from
DomainVisitsLog where [LastHit]=(SELECT max([lasthit]) from DomainVisitsLog
where ip='" & Request.ServerVariables("REMOTE_ADDR") & "') and ip='" &
Request.ServerVariables("REMOTE_ADDR") & "'")
' questa riga seleziona nel db l'eventuale record in cui e' registrato l'ip
del visitatore e in cui (in caso di visite multiple in piu' giornate) la
data e' la piu' aggiornata. (lasthit e' la data/ora riguardante l'ultima
page richiesta, non della visita, che potrebbe risalire a un intervallo di
tempo superiore)
   If Not UserConnInfos.EOF Then   'se trova un record riferito all'ip del
visitatore....
     if Fix(DateDiff("s",UserConnInfos("lasthit"),now)/60) < 20 Then
'controlla se il tempo passato dall'ultima richiesta di una pagina e'
inferiore a 20 minuti (o il tempo che impostiamo per la durata di una
sessione)
       Session("VisitID") = UserConnInfos("id") 'prendi l'id del record per
aggiornarlo successivamente
       UpdateVisit()   'richiami una funzione con cui aggiornare i dati
riguardanti la visita (tipo le pagine visitate e l'ora dell'ultima richiesta
fatta)
   Else
     LogVisit()    'crea una nuova visita nel DB in quanto il tempo
trascorso dall'ultima richiesta, supera il tempo che abbiamo definito per la
validita' di una sessione (20 minuti)
  End If
 Else
  LogVisit()  'altrimenti crea ex novo un record con i dati del visitatore
in quando i dati non sono nel DB
 End If
 UserConnInfos.Close
 Set UserConnInfos = Nothing
Else
 UpdateVisit()  'aggiorna i dati del visitatore in quando la sessionid e'
stata registrata
End If
spero di esserti stato chiaro ;)
ciao
-------------------------
Luca Restifo
Lu...@Restifo.it
www.dvara.net
-------------------------

> Come faccio? Io ho un dominio sotto aruba
Sě, č vero, non puoi.