ASP制作在线人数统计实例

我们先新建一个ACCESS数据库

内容为

表名:zai

字段为

1.ip

2.time

建立一个文件为index.asp

然后就如下程序!

<%

'===================================================================================================

'

'******************** 冰翎在线人数统计程序 V2.0 ******************************

'

' 本站程序由 『冰翎工作室』--冰淇淋剑客 独立制作!请尊重本人的劳动成果

'  

' 『冰翎工作室』─━╃→用实力打造个性

'

'* 作者:冰淇淋剑客  

'* 网站:http://www.blbcn.com  

'* 电子邮件:[email protected]  

'* 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!

完成了!

dim

相关推荐