不用global.asa讨论一下ASP在线人数统计的好方法.

 

ASP中统计在线人数的方法花样繁多,我也搞不清楚有几种 ^_^,偶这里介绍三种先,如有错误,欢迎各位批评指正,还有好方法,敬请补充!

首先介绍一种最简单的方法,利用 Application、 session 和 Global.asa ,因为当用ASP制作的网页都存放与WWW服务器的基点目录并且WWW服务器启动之后,每当有对ASP文件的HTTP请求时,服务器都会去读取基点目录下的Global.asa文件。所以可以在 Global.asa 文件中包含如下代码:

<%

'---------定义变量

dim rstj

dim ip

dim timeouted

dim x

dim conntj

dim dbpath

'---------定义变量结束

'---------建议数据库链接
set conntj=server.createobject("adodb.connection")

DBPath = Server.MapPath("count.mdb")

conntj.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

'---------建立数据库链接完成

'---------新建数据库rstj对象

set rstj = server.createobject("adodb.recordset")

'---------建立数据库rstj对象完成

'---------读取客户端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 count where posttime >= dateadd('n',-20,now()) group by ip"

rstj.Open sql,conntj,1,1

online=rstj.RecordCount

rstj.Close

'---------得到在线人数值

'---------查看数据库中是否已经有相同的值,没有则 x="yes"有则x="no"

sql="select ip from count where ip='" & ip & "'"

rstj.Open sql,conntj,1,1

if rstj.eof and rstj.bof then

x="yes"

else

x="no"

end if

rstj.close

'--------判断完毕

'--------如果数据库中没有相同的值则加入一个新值

if x="yes" then'   如果没有这个IP则增加一条记录

sql="select top 1 * from count"

rstj.Open sql,conntj,1,3

rstj.AddNew

rstj("ip")=ip

rstj("posttime")=now()

rstj.update

rstj.close

else '如果有这个IP则把时间改为现在的时间

sql="select * from count where ip='" & ip & "'"

rstj.Open sql,conntj,1,3

rstj("posttime")=now()

rstj.update

rstj.close

end if

'--------判断加入完毕

'--------删除20分钟以前所加入的值

timeouted = dateadd("n", -20, now())

sql="delete * from count where posttime < #" & timeouted & "#"

conntj.Execute sql

'--------删除完毕

'--------关闭数据对象

set rstj=nothing

conntj.Close

set conntj=nothing


%>

document.write('当前人在线<%=online%>人');

调用方式如下,在你要显示的地方插入如下代码(注意路径一定要写对哦!):

引用:

  

<script language=“javascript” src=“online.asp”></script>

原文地址:https://www.cnblogs.com/hfzsjz/p/1719182.html