本菜鸟实现在线用户列表的简单方法

转载 2006年05月27日 20:49:00
 因最近时间空点,写点个人心得了~,我们经常在程序中要实现显示当前有多少用户在线,以及在线用户的操作状态的功能,看了园子里朋友都有一些非常好的思路,这里我也提供一种很简单的方法:
1,用户登陆后,在每一次加载新的页面时判断权限(这是常规操作) 的同时,把用户状态写入一张OnlineUser表里,如果发现没有这个用户,就添加进OnlineUser表
2,在查询当前在线用户时,查询OnlineUser表即可。
3,用户退出程序时,加删除OnlineUser表中对应用户ID的记录。
4,用户非正常退出程序时,用DELETE FROM OnlineUser WHERE (DATEDIFF(ss, LastActTime, GETDATE()) > " + GlobalVar.Timeouts * 60 + ")的记录
BasePage中刷新在线用户操作状态的代码如下:
 1/// <summary>
 2        /// 刷新在线用户
 3        /// </summary>

 4        private void RefreshOnlineUser()
 5        {
 6            string sUserID = Session["UserID"].ToString();
 7            string sSQL = "";
 8            sSQL = "SELECT ID FROM OnlineUser WHERE (UserID = '" + sUserID + "')";
 9            DataTable dt = Query.ProcessSql(sSQL, GlobalVar.DBName);
10            if (dt.Rows.Count > 0)
11            {
12                string sID = dt.Rows[0]["ID"].ToString();
13                sSQL = "UPDATE OnlineUser SET LastActTime = '" + DateTime.Now.ToString() + "' WHERE (ID = '" + sID + "')";
14                Query.ProcessSql(sSQL, GlobalVar.DBName);
15            }

16            else
17            {
18                OnlineUserEntity sou = new OnlineUserEntity();  //此处用了听棠的SPL来做数据操作,具体可查看听棠.Net BLOG
19                sou.ID = Guid.NewGuid().ToString();
20                sou.UserID = sUserID;
21                sou.IPAddress = Request.UserHostAddress;
22                sou.Browser = Request.ServerVariables["HTTP_USER_AGENT"].ToString();
23                sou.StartTime = DateTime.Now;
24                sou.LastActTime = DateTime.Now;
25                sou.Save();
26            }

27            dt.Dispose();
28            sSQL = "DELETE FROM OnlineUser WHERE (DATEDIFF(ss, LastActTime, GETDATE()) > " + GlobalVar.Timeouts * 60 + ")";
29            Query.ProcessSql(sSQL, GlobalVar.DBName);
30        }
判断权限函数中部分涉及在线用户的代码:
if (Session["UserID"== null)
   
{
    
this.ErrorMsg(GlobalVar.PE_LOGIN_TIME_OUT);
   }

   
else
   
{
    
this.RefreshOnlineUser();
   }


其中GlobalValTimeouts 为自定义超时时间,GlobalVar.DBName为数据库,Query.ProcessSql是用听棠.Net的SPL持久层。

http://zjy.cnblogs.com/archive/2006/05/23/406898.html


大家如有不同建议,请提出啊,我下一步想法是用AJAX来实现在线用户列出来。

Python菜鸟成长记——简单实现用户登录和增删改查以及文件上传和下载

这一篇,将会展示用Python语言实现用户信息的增删改查 首先,先搭建项目框架,这个在上一节里有提到,就不再写 然后 ,搭好项目,就开始编码了,首先,先分析,我们要实现用户信息的管理,就先写好界面...

在线用户列表实现的一种方案

用户在线的统计和展示

第五天 CSDN (复习、聊天室、实现在线用户列表)

今天,just over了。累啊~~身体上的也就算了,关键是精神上的呀!!!呜呜。。有点晕,还得死撑着,抓紧步伐赶那!!! 咳咳,今天真累,以至于最后。。额,呵呵,老师原谅啊。 有视频真好,可以反...

jsp实现在线用户列表显示

在登陆后显示还有哪些用户在线,用一个列表显示出来,算是完善了之前写的代码的一个小功能吧,以后还会继续。一个是在LoginCheck的servlet里面,把登陆成功的用户用List的形式存进applic...

java实现简单的在线用户统计

这个是我入第二家公司,技术总监面试的一道我认为有水平的java面试题,当时我心里没有准确的答案,在一知半懂的情况下答了出了。结果是我面试上了。后来这道题成为了我面试别人是否能录用的标准之一,因为这也是...
  • sr2012
  • sr2012
  • 2012年10月22日 17:20
  • 637

HuaXinIM聊项目优化(在线用户列表实现在线更新)

(调用数据库) HuaXinIM聊项目今天优化了:在线用户列表的实时更新。 每当有一个用户上线或者下线,数据库就会修改用户的在线状态信息,然后再发送给每一个用户。 代码: 当用户上线就设置状态'on'...

菜鸟初学android体验之——实现自定义简单标题栏的两种简单方法

首先是参照了网上一些daemo,结合个人理解菜鸟自己来了一发,初学有很多不足,只起一个引导作用和初入门的小伙伴们一起学习,高手请掠过 一、第一种     1、定义一个title_bar.xml...

WCF聊天室(显示在线用户列表)

  • 2014年11月13日 16:41
  • 131KB
  • 下载

XMPP客户端关于用户组和好友列表的管理的一个实现方法

group management 由于XMPP协议并没有很好的支持group,也就是说,client没有办法从server得到空的group list。为了解决这个问题,用户在client创建一个g...

基于Redis的在线用户列表解决方案

前言:   由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能:   在单机环境下,在线列表的实现方案可以采用SessionL...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:本菜鸟实现在线用户列表的简单方法
举报原因:
原因补充:

(最多只允许输入30个字)