欢迎光临
我们一直在努力

一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用-ASP教程,ASP应用

建站超值云服务器,限时71元/月

在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数、游客人数、会员人数、在线用户列表,包括游客、会员和管理员(如果是游客,则自动生成游客的id,如果是会员,则显示会员姓名)。因为它要求有实时性,则首先我将用global.asa解决的想法pass掉。

问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数。

经过和网上一些朋友的探讨,终于解决了这个问题。

解决的原理为:编写一个通用页面,所谓的通用页面,就是应用里的每个页面都包含这个页面,例如:header.asp,在这个页面里,用xmlhttp写一段代码,这段代码的作用是每隔10秒或20秒就向服务器发送一个请求,目的是更新当前用户的在线时间并删除在线时间超过一定时间的用户,使数据库中的在线用户记录保持一定的实时性。

主要实现方法为:

新建一数据库,字段名称分别为:id(字符),name(字符),user(数字)tt(日期),admin(权限代码,0-普通用户,1-管理员)

表名:online

header.asp ↓

============================================================

<%

… …

if session("s_in")<>1 and session("s_name")="" then 如果用户是第一次登陆

rs.open "select * from online",conn,3,3

rs.addnew

rs("id")=session.sessionid

rs("name")="游客" & session.sessionid

rs("user")=0 0表示用户未登陆,是游客身份

rs("tt")=now

rs.update

rs.close

session("s_in")=1 设置用户的资料已经存入数据库,表示已经在线

end if

if session("s_name")<>"" then 如果用户已经通过登录框登录

rs.open "select * from online where id=" & session.sessionid & "",conn,3,3

rs("name")=session("s_name")

rs("admin")=session("s_admin") 将用户的姓名更新为会员名称

rs("user")=1 表示用户已经登陆,是会员身份

rs("tt")=now 将当前系统时间设置为用户的登陆时间

rs.update

rs.close

end if

… …

%>

… …

<head>

… …

<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>

… …

</head>

… …

==========================================================

onceonline.asp

<%

rs.open "select tt from online where id=" & session.sessionid & "",conn,3,3

rs("tt")=now() 更新当前在线用户的在线时间

rs.update

rs.close

rs.open "delete from online where datediff(s,tt,now())>60",conn,3,1 删除超时用户

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用-ASP教程,ASP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章