本来在网上有不少关于这方面的文章,可是我找了好久也没看到把(可能我的搜索水平有线把)不过倒是聊天室的很多。
如何统计会员再线状态,希望对刚开始接触asp的人有所帮助。
基本思路:
用户第一次登陆网站的时候查看有没有人在线,如果有但是他最后一次修改time字段的时间和当前时间比较大于10分钟那么删除纪录,同时在onlie表中插入数据,插入数据包括,他的name,ip,和他的所在页面,和纪录生成时间。
然后在他每次访问页面的时候都更新time时间,这样可以判断你的动作(是否在线),这样不同的循环执行删除、插入、修改,就可以统计再线人数了。
不知道大家可否明白(本人语言能力表达不好)。
1---〉我们最开始的时候在数据库中建一个onlie表格一个
包括字段如下 id,name,time,ip
2---->程序部分
<%
dim duration,rsd,sql
duration=600
sql="select time from online"
set rs1=conn.execute(sql)
while not rs1.eof
if datediff("s",rs1("time"),now())>=duration then
sql="delete * from online where time=#"&rs1("time")&"#"
'response.Write(sql)
conn.execute(sql)
end if
rs1.movenext
wend
以上部分是对online中有的人作比较,如果10分钟没有动静,将删除表中的用户。
sql="select username from online WHERE username='"&session("name")&"'"
set rs2=conn.execute(sql)
if not rs2.eof then
sql="update online set [time]=#"&now()&"#,url='"&request.ServerVariables("URL")&"' where username='"&session("name")&"'"
else
sql="insert into online(username,ip,url,class,zuanye) values('"&session("name")&"','"&request.ServerVariables("REMOTE_ADDR")&"','"&request.ServerVariables("URL")&"','"&session("class")&"','"&session("zuanye")&"')"
end if
'response.Write(sql)
conn.execute(sql)
这里判断用户是否为第一次登陆本网站,如果是那么在online中生成再线纪录,如果不是,那么直接修改时间。
dim sql_online,rs_online
set rs_online=server.CreateObject("adodb.recordset")
sql_online="select * from online"
'response.Write(sql_online)
rs_online.open sql_online,conn,1,1
%>
再每页调用就行了。