IT学习者网站访问统计系统 Ver 1.6的BUG

来源:互联网 发布:知乎账号解封 编辑:程序博客网 时间:2024/06/01 10:04

我公司好多客户都使用的是"IT学习者网站访问统计系统 Ver 1.6"进行流量统计。
但常有客户反无法正确统计来源于我们公司网站的统计数据。
我只好下载"IT学习者网站访问统计系统 Ver 1.6"进行研究,看看问题到底在哪里。
我发现在文件"cls_stat.asp"中可能存在一个BUG。

下面方法就是实现统计的。
 Public Sub StartCount
     Checkvpage()
     Init()
     ip=GetIp(ip)  

     if IsVisited(ip) then
        CountPage "PageView",vpage
        OutPut
         response.end
     else
         CountPage "Visitor",vpage
     end if

     '处理Referer信息
     GetReferer()
     User_Agent=hx.checkstr(Request.ServerVariables("HTTP_USER_AGENT"),250)
     '操作系统、浏览器、屏幕宽度
     GetClient()
     '处理来源地区
     GetWhere()
     vHour=hour(now())

     '将记录加入到Visitor表中 
     hx.execute("update CC_V set Ip='"&ip&"',Referer='"&Referer&"',Page='"&vpage&"',User_Agent='"&User_Agent&"',Dateandtime="&SqlNowString&" where id=(select top 1 id from CC_V order by Dateandtime asc,id asc)")
     '处理Client信息
     hx.execute("update CC_C set CC=CC+1 where id in "& Client_id)
     '处理日统计信息
     hx.Execute("update CC_D set Visitor=Visitor+1 where CDate="&SqlDateString)    
     '处理小时信息
     hx.execute "update CC_H set CTH=CTH+1,CCH=CCH+1,vtime="&SqlNowString&" where Hour=" &vHour
     OutPut

 End Sub

如果 IsVisited(ip) 为真时,就不进行统计了。

下面再看一下 IsVisited(ip) 方法吧

 Private Function IsVisited(ip) '判断是否要重新记数
     Dim rs,sql
     If Len(Session.Contents(CacheName)) = 0 Then  
         Session.Contents(CacheName) = 1
         Sql = "select Ip,vtime,CIP from CC_I where Ip='" & ip & "'"
         set rs=hx.Getrs(Sql,1,2)
         If rs.EOF then
          rs.AddNew
          rs(0)=ip
          rs(1)=now()
          rs.update
          isVisited=False
      Elseif DateDiff("h",rs(1),now())>ExpireTime Then
          rs(1)=now()
          rs(2)=rs(2)+1
          rs.update 
          isVisited=False 
      Else
          isVisited=True
      End If
       rs.close
       set rs=nothing
     Else
         isVisited = True
     End If
     'isVisited = false
 End Function

设计者试图通过标记位Session.Contents(CacheName)) 及超时时间ExpireTime 两个约束条件来限制重复统计。
可是,如果使用这一统计系统的用户,如果在别的网站投放了多个广告时,压根儿就只能统计到一次点击(除非用户把IE关了再打开,然后才点击广告)。

不知道这一问题是否还存在于其它版本。
希望使用这一系统进行流量统计的用户引起注意。