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

Random 2006-07-31 08:53:46
要显示所有在线用户的信息,一般用什么方式处理?
在一个Session中能否访问另一个Session的值,或遍历所有的Session呢?
...全文
197 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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可以遍历。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧