显示在线用户信息,常用的处理方式是什么?

Random 2006-07-31 08:53:46
要显示所有在线用户的信息,一般用什么方式处理?
在一个Session中能否访问另一个Session的值,或遍历所有的Session呢?
...全文
156 点赞 收藏 2
写回复
2 条回复
leohuang 2006年07月31日
我原来回答过这类问题

common.asp内容,把这个页include 到每个页
<%

dim conn
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("#数据库.mdb")

if session("UserName")<>"" then '如果用户已经登录
sql="update OnlineUsers set LoginDate=now() where UserName='" & Session("UserName") & "'"
conn.execute(sql)
end if
%>

<script language=javascript>
function Test()
{
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","OnceOnline.asp",false); // 向onceonline.asp发送更新请求
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10); // 10秒钟发送一次更新请求
</script>



OnceOnline.asp内容


<%
dim conn
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("#数据库.mdb")

if session("UserName")<>"" then '如果用户已经登录
sql="update OnlineUsers set LoginDate=now() where UserName='" & Session("UserName") & "';delete from OnLineUsers where Datediff('s',LoginDate,now())>15"
conn.execute(sql)
end if
conn.execute("delete from OnlineUsers where Datediff('s',LoginDate,now())>60")
conn.close
%>


原理就是上来用户就刷新现在的时间,隔10秒刷一次,超过15秒(根据自己设定)的就删除
这样基本上就是在线人数了
回复 点赞
newskyline 2006年07月31日
Session是针对每个用户的,无法遍历,但是Application可以遍历。
回复 点赞
发动态
发帖子
ASP
创建于2007-09-28

1.9w+

社区成员

35.7w+

社区内容

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区公告
暂无公告