IT学习者网站访问统计系统 Ver 1.6的BUG
2005-04-14 17:59
369 查看
我公司好多客户都使用的是"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关了再打开,然后才点击广告)。
不知道这一问题是否还存在于其它版本。
希望使用这一系统进行流量统计的用户引起注意。
但常有客户反无法正确统计来源于我们公司网站的统计数据。
我只好下载"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关了再打开,然后才点击广告)。
不知道这一问题是否还存在于其它版本。
希望使用这一系统进行流量统计的用户引起注意。
相关文章推荐
- 网站访问统计系统Piwik安装使用:支持插件扩展统计媲美Google Analytics
- Piwik 1.9 发布,网站访问统计系统
- 搭网站访问统计系统Piwik建开源
- 网站访问统计系统Piwik安装使用
- 阿江网站访问统计系统设计构思分析
- 网站访问统计系统 piwik
- 开源网站访问统计系统Piwik
- 做自己网站的访问记录系统,用于推广统计
- Piwik 1.9.1 发布,网站访问统计系统
- 阿江网站访问统计系统设计构思分析
- 阿江网站访问统计系统设计构思分析
- [ASP]网站访问统计系统生成器
- 开源网站访问统计系统Piwik
- Piwik 1.8.4 发布,网站访问统计系统
- 国内经常使用的网站访问统计系统比较
- piwik网站访问统计系统
- 开源网站访问统计系统Piwik的基本使用
- JavaScript实现网站访问次数统计代码
- 如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)
- shel自动统计网站访问日志