这个用到了在线用户表:login 有sessionid:存会话ID userid:存会员ID
我需要这样的是:
    1一个用户进了,他就往login写了一条记录,当然这时他还没登陆所以userid=0 为游客,但他登陆时,就把userid=改成该会员ID,并把登陆信息保存(session或cookie)
   问题:如何判断他是第一进来,而把记录写入表login呢:用session_start事件吗?
  
  2.如上面问题解决就看下面如何退出登陆:
       I:点网页退出按钮,正常退出,删除login表记录,清除session或cookie.
       II:问题:非正常退出,关闭浏览器,在线超时 ,那因该怎么删除掉login表里的内容呢。想半天没想明白啊,

解决方案 »

  1.   

    在login表里加一个时间字段,记录该用户最后一次刷新页面的时间,然后做一个服务或者一个死循环的线程,用表里取超过某时间段的用户记录,删之datediff函数
      

  2.   

    II:问题:非正常退出,关闭浏览器,在线超时 ,那因该怎么删除掉login表里的内容呢=========数据库提供一个字段表示,此用户最后一次访问时间,页面刷新请求,更新此时间,关闭浏览器,在线超时,服务器基本无法精确“意识”到,故,这是一条死路,不往前走了,
    当用户请求时,判断最后一次访问时间与当前请求时间的间隔是否小于你设定的超时时间,
    若是,即不是第一次请求再次登录时(比如因为超时Session没有),所有状态重置
      

  3.   

    1.问题 如何解决:
       当用户请求时,判断最后一次访问时间与当前请求时间的间隔是否小于你设定的超时时间,
    若是,即不是第一次请求
      但是有些游客第一次进来无任何状态信息,因该怎么办,第一次因该写个什么事件来触发插入用户信息到表login里面呢。
     
    2.ii  
      然后做一个服务或者一个死循环的线程,用表里取超过某时间段的用户记录,删之
         服务不会写,但是怎么在服务器端一直保持一个死循环呢,望给点思路
      

  4.   

    自己在总结下目前可行的是:
      login 有sessionid:存会话ID userid:存会员ID  userdatetime时间字段每个页面都调用一个方法,用sessionid来做唯一性判断,如在login表里面没有有内容就添加内容没登陆所以userid=0 为游客,但他登陆时,就把userid=改成该会员ID),如在login边里面有记录就更新userdatetime时间字段。这样我们只要查看login就字段有多少人在线了。\
        //不知道大家是不是这样做的,这样没个页面都调用好象很浪费资源啊,谁有更好见解。
      2.如上面问题解决就看下面如何退出登陆:
           I:点网页退出按钮,正常退出,删除login表记录,清除session或cookie.(这个没问题)       II:问题:非正常退出,关闭浏览器,在线超时 ,那因该怎么删除掉login表里的内容呢,(有人让我在服务器段写个死循环,每次判断userdatetime多久时间没更新就算超时,但是怎么在服务器端维持这样一个死循环呢,还有没有别的解决方法。)谁能在帮我解决下,谢谢
      

  5.   

    客户端用js setTimeout方法更新服务器。
      

  6.   

    问题一,用sessionid来做唯一性判断是对的,先判断sessionid是否为空,如为空,给用户分配一个随机数做为session,当然要保证唯一。把然后把sessionid存到login表里,这时可以把用户与注册会员一样对待了。如果用户登陆,就修改login表里的sessionid问题二,login表里要加一个有效时间,每个页面里更新一下。至于死循环,不要这样做。你可以在每次访问 在线用户表的时候,取出有效期小于多少的记录,删除过期的记录。这样就可以。