欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP制作在线人数统计实例

程序员文章站 2022-05-18 14:18:08
我们先新建一个access数据库 内容为 表名:zai 字段为 1.ip 2.time 建立一个文件为index.asp 然后就如下程序! <%...
我们先新建一个access数据库

内容为

表名:zai

字段为

1.ip

2.time

建立一个文件为index.asp

然后就如下程序!

<%
'===================================================================================================
'
'******************** 冰翎在线人数统计程序 v2.0 ******************************
'
' 本站程序由 『冰翎工作室』--冰淇淋剑客 独立制作!请尊重本人的劳动成果
'  
' 『冰翎工作室』─━╃→用实力打造个性
'
'* 作者:冰淇淋剑客  
'* 网站:http://www.blbcn.com  
'* 电子邮件:bingqilinjianke@163.com  
'* qq:68156987
'* 住址:江苏无锡
'******************************************************************************
'
' 版权所有·抄袭挪用必究
'
'===================================================================================================


'---------定义变量
dim rs
dim ip
dim timeout
dim x
dim conn
dim dbpath
'---------定义变量结束

'---------建议数据库链接
set conn=server.createobject("adodb.connection")
dbpath = server.mappath("zai.mdb")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & dbpath
'---------建立数据库链接完成

'---------新建数据库rs对象
set rs = server.createobject("adodb.recordset")
'---------建立数据库rs对象完成

'---------读取客户端ip地址
ip = request.servervariables("http_x_forwarded_for") '若是对方使用的是代理服务器上网的话,用request.servervariables("http_x_forwarded_for")可以得到对方的真实ip,若对方不是通过代理服务器上网的话,则ip的值为空
if ip = "" then ip = request.servervariables("remote_addr") '如果ip的值为空,则得到他的本地客户端地址
'---------ip读取完毕

'---------读出数据库内近20分钟所加入的新内容数,group by ip-表ip值相同的记作1
sql="select ip from zai where time >= dateadd('n',-20,now()) group by ip"
rs.open sql,conn,1,1
zai=rs.recordcount
rs.close
'---------得到在线人数值

'---------查看数据库中是否已经有相同的值,没有则 x="yes"有则x="no"
sql="select ip from zai where ip='" & ip & "'"
rs.open sql,conn,1,1
if rs.eof and rs.bof then
x="yes"
else
x="no"
end if
rs.close
'--------判断完毕

'--------如果数据库中没有相同的值则加入一个新值
if x="yes" then'   如果没有这个ip则增加一条记录
sql="select top 1 * from zai"
rs.open sql,conn,1,3
rs.addnew
rs("ip")=ip
rs("time")=now()
rs.update
rs.close
else   '如果有这个ip则把时间改为现在的时间

sql="select * from zai where ip='" & ip & "'"
rs.open sql,conn,1,3
rs("time")=now()
rs.update
rs.close
end if
'--------判断加入完毕

'--------删除20分钟以前所加入的值
timeout = dateadd("n", -20, now())
sql="delete * from zai where time < #" & timeout & "#"
conn.execute sql
'--------删除完毕

'--------关闭数据对象
set rs=nothing
conn.close
set conn=nothing
%>
document.write("共<%=zai%>人在线")

ok!

完成了!