Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Implementare statistiche web

    Ciao, sono fresco d'iscrizione [gli avatar sono eccellenti ]anche se da qualche tempo mi diletto con le pagine dinamiche in ASP.

    Ho realizzato un semplice script di estrazione statistiche, che interagendo coun un DB Access, restituisce:
    data con più visite: 01/05/03
    Contatti: 15605
    Mese scorso: 3147
    On-line: 1
    Visitatori oggi: 80
    Visitatori ieri: 76
    Differenza: 4
    Totale: 107150
    Registrati: 3949
    Ultimo registrato: Diana
    Adesso avrei l'esigenza di implementare questo script con altre statistiche, quali:
    ultimo login: pippo 21/08/2005 22.28.18
    ultimo logout: gianni 21/08/2005 22.28.16
    online: 3 utenti di cui 3 registrati

    numero massimo di utenti online
    23 utenti il 21/08/2005 21:33:43
    Dove posso prendere utili indicazioni?

    Vi ringrazio

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prova a cercare nel forum.
    Se il db è ben strutturato non avrai difficoltà, sono argomenti già trattati.

    Roby

  3. #3
    1. Ogni volta che un utente si logga devi eseguire un update sulla tabella utenti aggiornando il campo (ad esempio) dateLastLogin. Se non ce l'hai glielo aggiungi. Il dato statistico lo prelevi quindi facendo una query su quella tabella prendendolo con una
    "SELECT MAX(dateLastLogin) FROM tbl_users".

    2. Il logout non è una cosa semplice da gestire. Può avvenire sia perchè l'utente volontariamete abbia cliccato sul tasto logout il quale richiama una pagina che cancella le session (o i cookies) che tengono lo stato fittizio di connessione al sito, oppure per timeout della sessione stessa. Ad ogni modo, per tenere traccia dello stato fittizio di connessione degli utenti al sito dovresti avere uno script che ad ogni click fatto su qualunque pagina del sito aggiorni il campo (ad esmepio) dateLastImpression della tabella degli utenti. In questo modo, magari, se stabilisci che dopo tot minuti un utente viene considerato offline, puoi benissimo prendere quello la cui data sul campo dateLastImpression sia più recente rispetto al range oltre il quale un utente viene considerato offline.

    3. Ti serve l'utilizzo del file Global.asa dove mediante una application tieni il conto degli utenti connessi, differenziandoli tra utenti registrati e che hanno fatto il login o semplici visitatori anonimi.

    4. Il numero massimo di utenti connessi in un determinato momento è calcolabile mediante (a mio avviso) una ulteriore tabella del db dove ad ogni click fatto dagli utenti un nuovo record viene aggiunto con la data e l'ora attuale. In questo modo con una apposita funzione puoi calcolare il numero di utenti presenti entro il tot di minuti in cui un utente è considerato connesso.

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Grazie Mems per la spiegazione...lo stato dell'arte attuale prevede l'utilizzo di un DB Access, del file global.asa e di uno script asp per il riepilogo delle statistiche:

    - il DB Access è costituito dalla tbl_login (id, utente, password, dataregistrazione), dalla tbl_utente (id, idutente, nomeUtente, dataConnessione) e dalla tbl_sessioni (id, IPVisitatore, ContVisitatore, DataVisita).

    Questo è il file global.asa:
    codice:
     <script LANGUAGE="VBScript" RUNAT="Server"> 
    
    Sub Application_OnStart
    strConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("Mizushi.mdb")
    application("users") = 0 
    Application("dbconn") = strConn 
    application.unlock 
    End Sub 
     
    Sub Application_OnEnd 
    End Sub
     
    Sub Session_OnStart 
    Session("start") = Now
    session.timeout = 1 
    
    set objconnvisite=Server.createobject("ADODB.Connection") 
    objconnvisite.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &Server.mappath("Mizushi.mdb") 
    
    Set objrsvisite = Server.CreateObject("ADODB.Recordset") 
    objconnvisite.Open 
    
    oggi=date() 
    ipvisit=request.servervariables("remote_addr") 
    
    'SQL quando data=oggi e l'ip è nuovo 
    strSQL="SELECT * FROM tbl_sessioni WHERE datepart('d',visitdate)="&datepart("d",oggi)&" AND datepart('m',visitdate)="&datepart("m",oggi)&" AND datepart('yyyy',visitdate)="&datepart("yyyy",oggi)&" AND visitorIP='"&ipvisit&"'"
    objrsvisite.Open strSQL, objconnvisite, 3, 3 
    if (objrsvisite.EOF OR objrsvisite.BOF) then 
    'prima sessione odierna dell'ip ipvisit 
    objrsvisite.addnew 
    objrsvisite("visitdate")=oggi 
    objrsvisite("visitorip")=ipvisit 
    end if 
    objrsvisite("visitorcount")=objrsvisite("visitorcount")+1 
    objrsvisite.update
     
    objrsvisite.Close 
    Set objrsvisite = Nothing 
    
    objconnvisite.Close 
    Set objconnvisite = Nothing
     
    application.lock 
    application("users")=cint(application("users"))+1
    application.unlock 
    End Sub 
    
    Sub Session_OnEnd
    
    vecchio = "" 
    application.lock 
    vecchio = Session("utente") & "#^#" & session("id")&"|"
    if instr(mid(application("utente"), instr(application("utente"), "#^#")+3), "#^#") >  0 then
    Application("Utente") = replace(Application("Utente"), vecchio, "")     
    else
    Application("Utente") = ""   
    end if
    	
    application("users")=cint(application("users"))-1
    Application.UnLock
    
    End Sub 
      
    </script>
    Script statistiche:
    codice:
     <%
    function fnFormattaData(data)
      dim anno, mese, giorno
    
      anno   = right(Year(data), 2)
      mese   = right("00" &  Month(data), 2)
      giorno = right("00" &  Day(data), 2)
    
      fnFormattaData = giorno & "/" & mese & "/" & anno
    end function
    
    dim datetosearch 
    datetosearch = dateadd("d",-1,date())
    
    dim datetosearch2 
    datetosearch2 = dateadd("m",-1,date())
    
    condizioni="where datepart('d',visitdate)="& datepart("d",datetosearch)&" AND datepart('m',visitdate)="&datepart("m",datetosearch)&" AND datepart('yyyy',visitdate)="&datepart("yyyy",datetosearch)&")" 
    
    condizioni1="where datepart('d',visitdate)="&datepart("d",date())&" AND datepart('m',visitdate)="&datepart("m",date())&" AND datepart('yyyy',visitdate)="&datepart("yyyy",date())&")"
    
    datepart('yyyy',visitdate)="&datepart("yyyy",datetosearch2)&") " 
    
    condizioni2="where datepart('m',visitdate)="&datepart("m",datetosearch2)&" AND datepart('yyyy',visitdate)="&datepart("yyyy",datetosearch2)&") " 
    
    set objconn=Server.createobject("ADODB.Connection") 
    
    objconn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &Server.mappath("Mizushi.mdb") 
    objconn.Open 
    
    strSQL="SELECT (select sum(visitorcount) from tbl_sessioni) as tot," 
    strSQL=strSQL&"(select sum (visitorcount) from tbl_sessioni "&condizioni1&" as tot_oggi," 
    strSQL=strSQL&"(select sum (visitorcount) from tbl_sessioni "&condizioni&" as tot_ieri,"
    strSQL=strSQL&"(select sum (visitorcount) from tbl_sessioni "&condizioni2&" as mese_ieri," 
    strSQL=strSQL&"(select top 1 visitorIP from tbl_sessioni order by visitID desc) as ultimo_ip" 
    'strSQL=strSQL&"(select sum(visitPage) from tbl_pagineViste) as Tot_page," 
    'strSQL=strSQL&"(select sum(visitPage) from tbl_pagineViste "&condizioni1&" as page_oggi" 
    strSQL=strSQL&" from tbl_sessioni" 
    set rs=objconn.execute(strSQL) 
    'response.write strSQL
    
    sSQL = "SELECT TOP 1 * FROM (SELECT VisitDate, sum(VisitorCount) AS Conta FROM tbl_sessioni GROUP BY VisitDate ORDER BY 2 DESC)"
    set rs3 = objconn.execute(sSQL) 
    
    var = rs3("Conta")
    bar = (fnFormattaData(rs3("VisitDate")))
    
    set conn2=Server.createobject("ADODB.Connection") 
    conn2.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &Server.mappath("Mizushi.mdb") 
    conn2.Open 
    
    strsql="SELECT (select top 1 login1 from tbl_login order by id desc) as ultimo_reg," 
    strSQL=strsql&"(select count(*) from tbl_login)as tot_utenti FROM tbl_login" 
    
    rs2=conn2.execute(strSQL) 
    %>
    C'è bisogno di altri parametri per integrare le statistiche come ho scritto???

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.