WEB开发网
开发学院WEB开发ASP 完整的访问统计程序(二 程序篇) 阅读

完整的访问统计程序(二 程序篇)

 2000-08-25 10:51:53 来源:WEB开发网   
核心提示:/*原创:豆腐请大家在转载和使用的时候保留这条信息*//* dbcn.asp 创建数据库连接的 公用程序*/<%function OpenConn() '创建数据库连接 dim ConnStr dim uid dim pwd dim db uid="BBC" pwd="BB
/*
 原创:豆腐
 请大家在转载和使用的时候 保留这条信息
*/
/* dbcn.asp
  创建数据库连接的 公用程序
*/
<%
 function OpenConn()
   '创建数据库连接
   dim ConnStr
   dim uid
   dim pwd
   dim db
   uid="BBC"
   pwd="BBC"
   db="BBC"
   Softserver="Softdepserver"
   Set Conn = Server.CreateObject("ADODB.Connection")
   ConnStr="PRovider=SQLOLEDB.1;UID=" & uid & ";PWD=" & pwd & ";database=" & db & ";server=" &
Softserver & ""
   
   Conn.Open ConnStr
   
   set OpenConn=Conn
 end function
 
 function OpenRst()
   '创建数据库记录集
   set Rst=Server.CreateObject ("ADODB.Recordset")
   set OpenRst=Rst
 end function
%>
/*
 staticFunc
 统计程序所需要用到的函数库
*/
<!--#include file="dbcn.asp"-->
<%
  set conn=openConn()
  set rst=openRst()
  sub WriteDateTable(intStart,intEnd,strArray,ccount)
   '生成统计表
   %>
    <table border=1 width=100%>
      <%for i= intStart to intEnd%>
       <tr>
       <td width=30%><%=strArray(i)%></td>
       <td width=60%>
       <%
         if rst.eof then
          setbar 0,ccount
         else
          if rst(1)=i then
            setbar rst(3),ccount
        if not rst.eof then rst.movenext
          else
            setbar 0,ccount
          end if
         end if
       %>
       </td>
     </tr>    
      <%next%>
    </table>
   <%
  end sub
%>
<%
  sub setBar(num,ccount)
   '生成统计条
   if ccount=0 then
    percent=0
   else
    percent=cInt(num/ccount*10000)/100
   end if  
   strGif="http://www.cncms.com/bar.gif"
   %>
    <img src="<%=strGif%>" width="<%=percent+5%>" height=10><font color=red><%=percent%>%</font>
   <td align=center>
    <%=num%>
   </td>
  <%
  end sub
%>
<%
  sub writeDayStatic(userid)
  '生成日统计
  i=0
  dim strArray(100)
  for i=0 to 23
   strArray(i)= cStr(i) & "点--" & cstr(i+1) & "点"
  next
  i=0
  set rst=openRst()
  strSQL="select sum(num) as ccount from dateStatic where userid='" & userid & "'"
  rst.open strSQL,conn,3,3
  if isnull(Rst("ccount")) then
   ccount=0
  else
   ccount=Rst("ccount")
  end if
  strSQL="select * from dateStatic where userid='" & userid & "' order by hourid"
  set rst=openRst()
  rst.open strSQL,conn,3,3
%>
访问总数<%=ccount%>
<table border=1 width=100%>
  <tr height=100%>
    <td width=50%><% WriteDateTable 0, 11, strArray ,ccount %></td>
    <td width=50%><%WriteDateTable 12, 23, strArray ,ccount %></td>
  </tr>
</table>
<%
end sub
%>
<%
  sub writeWeekStatic(userid)
  '生成周统计  
  i=0
  dim strArray(7)
  strArray(0)="星期日"
  strArray(1)="星期一"
  strArray(2)="星期二"
  strArray(3)="星期三"
  strArray(4)="星期四"
  strArray(5)="星期五"
  strArray(6)="星期六"
  i=0
  strSQL="select sum(num) as ccount from weekStatic where userid='" & userid & "'"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  if isnull(Rst("ccount")) then
   ccount=0
  else
   ccount=Rst("ccount")
  end if
  strSQL="select * from WeekStatic where userid='" & userid & "' order by dayid"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  %>
  访问总数<%=ccount%>
   <table border=1 width=100%>
    <tr height=100%>
     <td width=100%><% WriteDateTable 0, 6, strArray ,ccount %></td>
    </tr>
  </table>
  <%
  end sub
%>
<%
  sub writeMonthStatic(userid)
  '生成月统计
  i=0
  dim strArray(32)
  for i=1 to 31
   strArray(i)=cStr(i) & "日"
  next
  i=0
  strSQL="select sum(num) as ccount from MonthStatic where userid='" & userid & "'"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  if isnull(Rst("ccount")) then
   ccount=0
  else
   ccount=Rst("ccount")
  end if
  strSQL="select * from MonthStatic where userid='" & userid & "' order by dayid"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  %>
  访问总数<%=ccount%>
   <table border=1 width=100%>
    <tr height=100%>
     <td width=50%><% WriteDateTable 1, 16, strArray ,ccount %></td>
     <td width=50%><% WriteDateTable 17, 31, strArray ,ccount %></td>
    </tr>
  </table>
  <%
  end sub
%>
<%
  sub writeYearStatic(userid)
  i=0
  dim strArray(13)
  for i=1 to 12
   strArray(i)=cStr(i) & "月"
  next
  i=0
  strSQL="select sum(num) as ccount from YearStatic where userid='" & userid & "'"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  if isnull(Rst("ccount")) then
   ccount=0
  else
   ccount=Rst("ccount")
  end if
  strSQL="select * from YearStatic where userid='" & userid & "' order by monthid"
  set rst=openRst()
  rst.open strSQL,conn,3,3
  %>
  访问总数<%=ccount%>
   <table border=1 width=100%>
    <tr height=100%>
     <td width=50%><% WriteDateTable 1, 6, strArray ,ccount %></td>
     <td width=50%><% WriteDateTable 7, 12, strArray ,ccount %></td>
    </tr>
  </table>
  <%
  end sub
%>
<%
  sub WriteRecentInfo(userid)
   '显示访问者的浏览器分布
   StrSQL="select top 10 * from accessstat where userid='" & userid & "' order by VisitTime desc"
   set rst=openRst()
   Rst.open StrSQL,Conn,3,1
   %>
   <table border=1 width=100% align=center cellSpacing=1 cellPadding=1>
     <tr>
       <td width=5% align=center>序 号</td>
       <td width=20% align=center>来访时间</td>         
       <td width=15% align=center>ip地址</td>
       <td width=15% align=center>所用操作系统</td>
       <td width=15% align=center>所用浏览器类型</td>
       <td width=30% align=center>浏览的上一页</td>
       <td width=0%></td>
     </tr>
     <% for i=1 to Rst.RecordCount %>          
       <tr>
         <td width=5% align=center><%=i%></td>
         <td width=20% align=center><%=Rst("VisitTime")%
></td>                               
         <td width=15% align=center><%=Rst("IPAddr")%></td>
         <td width=15% align=center><%=Rst("UseSystem")%></td>
         <td width=15% align=center><%=Rst("BrowserType")%></td>  
         <td width=30% align=center><a HREF=<%=Rst("LastPage")%>><%Response.Write Rst("LastPage")%
></a></td>
         <td width=0%></td>
        </tr>
        <% Rst.MoveNext%>       
   <% Next %>
   </table>  
<%
  end sub
%>
<%
  sub WriteBrowserInfo(userid)
   Set Rst=OpenRst()
   strSQL="select count(*) as VisitCount from AccessStat where userid='" & userid & "'"
   Rst.open strSQL,Conn,3,1
   TotalVisit=rst(0)
   StrSQL="select BrowserType,count(BrowserType) as visitcount from AccessStat where userid='" & userid
& "' group by BrowserType order by VisitCount desc"
   Set Rst=OpenRst()
   Rst.open StrSQL,Conn,3,1
   %>  
   <table border=1 width=100% align=center cellSpacing=1 cellPadding=1>
     <tr>
       <td width=5% align=center>序 号</td>
       <td width=15% align=center>所用浏览器类型</td>         
       <td width=40% align=center>访问比例尺表示</td>
       <td width=15% align=center>访问次数</td>
       <td width=5%></td>
     </tr>
     <%for i=1 to   Rst.RecordCount %>
       <tr>
        <td width=5% align=center><%=i%></td>
        <td width=15% align=center><%=Rst("BrowserType")%></td>
        <!--
        <td width=15% align=center><%=Rst("VisitCount")%
></td>                           
        <td width=10% align=center><%=FormatNumber(CInt(Rst
("VisitCount")/TotalVisit*10000)/100,true,true)%>%</td>
         <td width=40% align=left><img src=http://www.cncms.com/bar.gif width=<%=(Rst("VisitCount")/TotalVisit)*300%>
height=10></td>
        -->
        <td><%setbar Rst("VisitCount"),TotalVisit %></td>
        <td width=5% ></td>
       </tr>
     <%Rst.MoveNext%>
     <% Next %>  
     </table>
<%  
  end sub
%>
<%
  sub InsertData(userid)
   '处理浏览者信息
   ExecUserInfo userid
   '处理日统计
   ExecDayStatic userid
   '处理周统计
   ExecWeekStatic userid
   '处理月统计
   ExecMonthStatic userid
   '处理年统计
   ExecYearStatic userid
  end sub
%>
<%
  sub ExecUserInfo(userid)
   '处理浏览者信息
   strRet=Request.ServerVariables("HTTP_USER_AGENT")
   strArray=split(strRet,"(")
   strRet=left(strArray(1),len(strArray(1))-1)
   strArray=split(strRet,";")
   strBrowserName=strArray(1)    '浏览器
   strUseSystem=strArray(2)     '用户操作系统 
   strPrPage=Request.ServerVariables("HTTP_REFERER")   '从何而来
   if strPrPage="" then
     strPrPage="http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables
("SCRIPT_NAME")
   end if
   strIPAddr=Request.ServerVariables ("REMOTE_ADDR")    '用户IP地址
   strSQL="insert into AccessStat(UserID,VisitTime,IPAddr,UseSystem,BrowserType,LastPage) "
   strSQL=strSQL & "values ('" & trim(userid) & "',getDate(),'" & trim(strIPAddr) & "','"
   strSQL=strSQL & trim(strUseSystem) & "','" & trim(strBrowserName) & "','" & trim(strPrPage) & "')"
   conn.execute strSQL
  end sub
%>
<%
  sub ExecDayStatic(userid)
   '处理每日的小时数据
   strSQL="select * from DateStatic where dateid=datepart(dy,getdate()) and userid='" & userid & "'"
   set rst=openrst()
   rst.open strSQL,conn,3,3
   if rst.eof and rst.bof then
     strSQL="delete from DateStatic where userid='" & userid & "'"
     conn.execute strSQL
     for i=0 to 23
      strSQL="insert into DateStatic values(datepart(dy,getdate())," & cStr(i) & ",'" & userid
& "',0)"
      conn.execute strSQL
     next
   end if
   strSQL="update datestatic set num=num + 1 where dateid=datepart(dy,getdate()) and hourid= datepart
(hh,getdate()) and userid='" & userid & "'"
   conn.execute strSQL   
  end sub
%>
<%
  sub ExecWeekStatic(userid)
   '处理每周的日数据
   strSQL="select * from WeekStatic where weekid=datepart(ww,getdate()) and userid='" & userid & "'"
   set rst=openRst()
   rst.open strSQL,conn,3,3
   if rst.eof and rst.bof then
    strSQL="delete from WeekStatic where userid='" & userid & "'"
    conn.execute strSQL
    for i=0 to 6
      strSQL="insert into WeekStatic values(datepart(ww,getdate())," & cStr(i) & ",'" & userid
& "',0)"
      conn.execute strSQL
    next
   end if
   strSQL="update weekstatic set num=num + 1 where weekid=datepart(ww,getdate()) and dayid+1= datepart
(dw,getdate()) and userid='" & userid & "'"
   conn.execute strSQL
 end sub
%>
<%
  sub ExecMonthStatic(userid)
   '处理每月的日数据
   strSQL="select * from MonthStatic where monthid=datepart(mm,getdate()) and userid='" & userid & "'"
   set rst=openRst()
   rst.open strSQL,conn,3,3
   if rst.eof and rst.bof then
     strSQL="delete from MonthStatic where userid='" & userid & "'"
     conn.execute strSQL
     for i=1 to 31
      strSQL="insert into MonthStatic values(datepart(mm,getdate())," & cStr(i) & ",'" & userid
& "',0)"
      conn.execute strSQL
     next
   end if
   strSQL="update monthstatic set num=num + 1 where monthid=datepart(mm,getdate()) and dayid= datepart
(dd,getdate())"
   conn.execute strSQL
  end sub
%>
<%
  sub ExecYearStatic(userid)
   '处理每年的月数据
   strSQL="select * from YearStatic where yearid=datepart(yy,getdate()) and userid='" & userid & "'"
   set rst=openRst()
   rst.open strSQL,conn,3,3
   if rst.eof and rst.bof then
     strSQL="delete from YearStatic where userid='" & userid & "'"
     conn.execute strSQL
     for i=1 to 12
      strSQL="insert into YearStatic values(datepart(yy,getdate())," & cStr(i) & ",'" & userid
& "',0)"
      conn.execute strSQL
     next
   end if
   strSQL="update YearStatic set num=num + 1 where Yearid=datepart(yy,getdate()) and Monthid= datepart
(mm,getdate()) and userid='" & userid & "'"
   conn.execute strSQL
  end sub
%>


Tags:完整 访问 统计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接