建立一个名为OnLine的表,分别有UserName(文本)、UserIP(文本)、LastActTime(日期/时间)三个字段,代表访客的昵称、IP、最后活动时间!
<%
DuringTime=1100 '设置访客1100秒不活动则显示离线
set rs02=server.createobject("adodb.recordset")
sql02="select * from OnLine"
rs02.open sql02,conn,3,2
do while not rs02.eof
if datediff("s",rs02("LastActTime"),now)>=DuringTime then
strSQL = "delete * from OnLine where LastActTime =#"&rs02("LastActTime")&"#"
conn.execute strSQL
end if
rs02.movenext
loop
rs02.close
set rs02=nothing
sql01="select * from OnLine where UserIP='"&request.servervariables("REMOTE_ADDR")&"'"
set rs01=server.createobject("adodb.recordset")
rs01.open sql01,conn,3,2
if rs01.recordcount =0 then '数据库中没有该IP
rs01.addnew
rs01("UserIP")=request.servervariables("REMOTE_ADDR")
rs01("LastActTime")=now
if session("user")<>"" then
rs01("UserName")=session("user")
else
rs01("UserName")="游客"
end if
else
rs01.update
rs01("UserIP")=request.servervariables("REMOTE_ADDR")
rs01("LastActTime")=now
if session("user")<>"" then
rs01("UserName")=session("user")
else
rs01("UserName")="游客"
end if
end if
rs01.update
rs01.close
set rs01=nothing
UserName="游客"
sql03="select * from OnLine where UserName='"&UserName&"'"
set rs03=server.createobject("adodb.recordset")
rs03.open sql03,conn,3,2
tj4=rs03.recordcount
rs03.close
set rs03=nothing
sql04="select * from OnLine where UserName<>'"&UserName&"'"
set rs04=server.createobject("adodb.recordset")
rs04.open sql04,conn,3,2
tj5=rs04.recordcount
rs04.close
set rs04=nothing
%>
把以上代码存入每一个需要查询访客人数的页面!
以上程序把有名字的人(session("user")<>"")当成注册会员,没名字的人当成游客!在需要显示人数的地方调用以下代码:
当前有 <%=tj5%> 个会员和 <%=tj4%> 个潜水员在访问论坛
如果需要显示每个会员的名称:
<%sql05="select * from OnLine where UserName<>""游客"""
set rs04=server.createobject("adodb.recordset")
rs04.open sql04,conn,3,2
do while not rs04.eof%>
<%=rs04("UserName")%>
<%rs04.MoveNext
loop
rs04.close
set rs04=nothing%>
完了,简单吧!
有人问如果想要知道人们都在访问哪一个页面,要怎样做,其实也很简单,增加一个字段来存放页面的url,读取资料的时候读出就行:)