如何判断SESSION_ID是否有效?现在要做一下功能,防止同一个用户同时登录。
现在的做法是将用户名,SESSION_ID,IP等记录到数据库中,但现在有个问题是如果用户是异常退出的,如何判断用户的登录信息是否有效?

解决方案 »

  1.   

    数据库表中加一个Session的过期时间,时间一到就将该ID设为无效。
      

  2.   

    我SESSION_ID,IP,登录标识等信息记录到数据库中,是为了每次登录时防止用户用同一个用户名同时登录
      

  3.   

    就是处理异常情况的啊。因为你侦测不到用户的异常情况,你只能在用户有操作时更新数据库的SESSION信息,所以用户有异常时,当用户一段时间未操作后,就将用户的SESSION设置为过期,那么用户下次登录时就允许他登录。
      

  4.   

    你不需要知道他异常退出,只要过期时间到了,SESSION就设置为无效。
      

  5.   

    你的过期时间是不是PHP中的SESSION设置,我说的是在数据库字段中加一个过期时间,如果用户再登录时先检查和上次登录的时间相比是不是超时了,如果超时就允许他再次登录,如果没有超时就不让他登陆。
      

  6.   

    把session设置一个过期时间,当时间到了的时候就自动销毁
      

  7.   

    http://topic.csdn.net/u/20090712/12/5d0e294b-2807-40cd-a88d-f5e95d0d1cb1.html
      

  8.   


    怎么不人性化了,不管是不是退出,只要超过一定时限,session就应该失效啊。
      

  9.   

    踢掉前一个比较简单
    但如果想阻止登录就必须使用 ajax 做 keepalive, 将timeout 改短
      

  10.   

    考虑单点登录吧。只有这样才能处理 非法关机 、浏览器的问题。可是具体的sso 怎么实现 我也不太会。你去google吧
      

  11.   

    我的做法:在用户在线表中设置一个lastactivity字段,用户每次有操作或者查看其他页面都将这个字段进行更新,如果lastactivity和现在的时间差距超过一个小时则判定用户注销。每次有用户登录的时候都清除一下在线表中超过一个小时没有活动的用户记录,这样就不用去判断用户是不是异常退出了,只需要判断用户是不是超过一个小时没有活动就可以了。
      

  12.   

    session有个有效时间,一旦到时间,自动销毁!
      

  13.   

    还是那句 ... 不做ajax keepalive
    你的用户异常退出后,帐户会锁死一小时不能用我会设每 30~60 秒传 keepalive
    2~5 分钟断线登出
      

  14.   


    SSO 跟这个主题没关系