在线人数统计源代码用ASP怎么写????
1.首先我们建立数据库及表
a.我们用accesss建立一个数据库名为zai的mdb文件
b.设计id(自动编号,主键),ip(浏览者ip地址),time(浏览者进入站点时间)三个字段
本文转载自http://www.it055.com/it055_infos/net_programs/asp/214_page1.htm
2.(请参照卢钢为每一句的注解)下面我们来看一下名为online.asp代码正文:
<%set conn=server.createobject("adodb.connection")'建立conn对象
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("zai.mdb")'打开数据库
%>
<%
dim rs'定义变量记录集
dim ip'定义变量ip地址
dim timeout'定义变量删除ip时间
dim x
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") '若是对方使用的是代理服务器上网的话,用Request.ServerVariables("HTTP_X_FORWARDED_FOR")可以得到对方的真实IP,若对方不是通过代理服务器上网的话,则IP的值为空
If ip = "" Then ip = Request.ServerVariables("REMOTE_ADDR") '如果IP的值为空,则得到他的本地客户端地址
sql="select ip from zai where time >= dateadd('n',-10,now()) order by ip"'注意与datediff函数的区别,Date DateAdd 函数描述:返回已添加指定时间间隔的日期
set rs=server.createobject("adodb.recordset")'创建对象
rs.Open sql,conn,1,1
zai=rs.RecordCount'得到10分钟内ip数,在线数
rs.close
%>
在线document.write('<%=zai%>')人
<%
sql="select ip from zai where ip='" & ip & "'"
rs.Open sql,conn,1,1
if rs.eof and rs.bof then '如果数据库中有相同ip的记录集x=no否则x=yes
x="yes"
else
x="no"
end if
rs.close
if x="yes" then'数据库中没有相同ip的记录集时候,添加此ip
sql="select top 1 * from zai"
rs.Open sql,conn,3,2
rs.AddNew
rs("ip")=ip
rs("time")=now()
rs.update
rs.close
end if
%>
<%
timeout = dateadd("n", -10, now())'删除10分钟以前的ip地址,注意函数dateadd()使用
sql="delete * from zai where time < #" & timeout & "#"
conn.Execute sql
%>
我们也可以把10分钟修改成20分钟,甚至更长的时间.把<script language="javascript" src=路径/online.asp></script>插入自己网页的适当位置。就可以显示在线人数了.此程序卢钢已经测试成功.大家可以自己在原来的基础上修改一下。