首页 > 编程 > ASP > 正文

做一个简单的网站统计和在线人数统计

2024-05-04 11:06:02
字体:
来源:转载
供稿:网友

做一个简单的网站统计

设计思路:利用用户网页请求时触发服务器sessionid来记录用户的登录状态,由于每个网页请求活动最多的是conn.asp这个文件,我们利用这个文件来做在线用户的信息处理,当用户20分钟内没有网页请求时,就清除这个用户。

1、数据表:我们在数据库中加入两个表
line表:sessionid 字符型 20位 用于记录客户网页请求的唯一标记
userdate 日期时间型 用于记录客户最后一次网页请求的时间
id 自动编号型
你也可以在这个表中记录用户的其它信息,如帐号、IP等信息
count表:userdate 日期时间型 用于记录当天的日期
count 数字型 用于记录网站点击量
today 数字型 用于记录今天的访问量
max 数字型 用于记录日最大访问量
在这个表中,由于只有一条记录,所以用不着id这个字段,但保留id字段是一个好的习惯

2、利用conn.asp来处理line表

(1)连接数据库
dim conn
dim connstr
dim db
db="date/date.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr

(2)清空超时的记录
conn.execute("delete from line where datediff(""s"",userdate,now())>=1200")

(3)记录客户信息至line表,并进行站点统计处理
dim sql,sql1,rs,rs1
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from line where [sessionid]=""&session.sessionid&""" "判断客户是否最初的网页请求
rs.open sql,conn,1,3
if not rs.eof then "如果是最初的网页请求,就记录客户信息,否则只更改请求时间
rs("userdate")=now()
else
Set rs1=Server.CreateObject("ADODB.Recordset") "以下部分做站点统计
sql1="select * from [count]"
rs1.open sql1,conn,1,3
if rs.eof then "如果表中没有记录,就初始化这个表
rs.addnew
rs("count")=1
rs("max")=1
rs("today")=1
rs("userdate")=date()
else
rs1("count")=rs1("count") 1 "网站点击量计数
if rs1("userdate")=date() then "如果系统日期和数据记录的最后日期相同,把当日访问量加1
rs1("today")=rs1("today") 1
else ‘如果不同,把日访问量置1,数据记录日期改为服务器日期
rs1("today")=1
rs1("userdate")=date()
end if
rs1.update
if rs1("max")<=rs1("today") then ’如果当日统计数超出最大日访问量,更新最大日访问量
rs1("max")=rs1("today")
end if
end if
rs1.update
rs1.close
set rs1=nothing

rs.addnew "以下是记录用户的信息
rs("sessionid")=session.sessionid "把sessionid写入数据表
rs("userdate")=now() 把系统日期写入数据表
end if
rs.update
rs.close
set rs=nothing

以上的处理只是准备好了统计信息,用于网站统计的代码如下,我们用line.asp作为文件名
<!--#include file="conn.asp"-->
<% dim count,today,max,line
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from [count]"
rs.open sql,conn,1,1
today=rs("today")
count=rs("count")
max=rs("max")
rs.close
set rs=nothing
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select count(*) from line"
rs.open sql,conn,1,1
line=rs(0)
rs.close
set rs=nothing
%>
以上我们准备好了网站统计信息,分别放在变量count,today,max,line中,在.asp网页中,我们可以用response.write 来输出,用include来引用,但在html文档中,肯定是不行的,所以我们得用下面的语句来输出统计内容:
document.write ("网站访问量:<%=count%>人<br>")
document.write("今天有:<%=today%>人访问了本站<br>")
document.write("本站的最高日访问量:<%=max%>人<br>")
document.write("当前在线:<%=line%>人")
我们用<script src="line.asp" ></script>来引用这个文件 就可以了

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表