chinaITman(中国IT人) 如果用户直接关闭windows窗口呢?你的下线标志怎么办?
我想用session可以,定时清理离线用户,但是也十分不准确。

解决方案 »

  1.   

    利用session和cookie 就可解决这类问题,
    最好建立个用户在线库以判断用户是否已经离开了本网地。
      

  2.   

    请问 heaven 如何记录用户上一次操作时间?
      

  3.   

    TO:wyi202(英子) 
    用户在你页面上时。一定会有些操作。而这些操作是不定时的。
    如果有新的操作,就去检测,在线用户中是否有这个用户。如果有,则第二时间清0。
    如果没有,说明已经超过所限时间,再加入就是。
    这样无论用户在页面上呆多长时候,只要有操作,就会出现在,在线用户中。我感觉是一种笨办法:)
      

  4.   

    这个问题前面已经讨论过很多次了`~~~我提出的方案是:
    用户登录后给它注册一个session变量~~~离开时则destroy该session变量~~~那问题就剩下如何准确的知道用户是否下线~~可以这样解决:
    把session变量的存活时间可以设置成到浏览器关闭为止
    当用户关闭浏览器时~~session变量消失~~~就可以知道用户是否退出了但是这样还是有一个问题就是如果用户离开时并不是关闭浏览器~~~而是在地址兰中直接输入其他地址的话~~系统将认为该用户仍在登录状态中~~~这个问题一直没有一个很好的解决办法~~~如果真的要解决的话~~~也只有采用heaven说的那种"笨办法"了~~~呵呵~~
     
      

  5.   

    可以在数据库中建一个表示用户在线的表---只要两个字段----name,date
    当用户登陆时,判断数据库中有没有这个用户,如果有,就不把当前用户加如数据库重的表;
    如果没有---就把当前用户的登陆时间加入数据库,并且用当前的时间和数据库中存在的所有时间比较(如果表中有比当前时间晚n分钟,则删掉那些用户),这样只要统计出这段时间在表中有多少name就行了。
      

  6.   

    我来说说
    不用session
    首先建张online表保存在线用户名,还有一个lastActTime字段,表示用户最后一次动作时间
    然后在网页上放一小块frame,让他自动刷新(例如30秒),刷新时执行update,根据用户的cookie,获得用户名,把他在online表中的lastActTime更新为当前时间,然后把所有online表中当前时间-lastActTime〉1分钟的用户名删除,搞定!我的社区就是这么解决的,不过有一个怪问题,可能是因为服务器太忙,所以有时候某些用户会被认为不在线上,其实他在,也有可能是因为html中的自动刷新出了问题