可以考虑在session中记录IP. 只在登录的时候改写这个IP, 其余的时候检查, 不一样就认为没有登录.以上办法简单, 但对于小区宽带用户失效. 要解决这个问题, 可以考虑用cookie给访问网站的每台机器做一个随机标识, 以这个标识做为"IP".

解决方案 »

  1.   

    直接记录IP的确不太可行.如果做个随机标识呢, 看样子还是比较可行的
    可以根据timestamp做成标识tag, 你觉得如何?
    然后对于用户每次的操作, 都先检查他是否登陆, 他的tag是否正确
      

  2.   

    在用户的表里面记录最后登陆的session id
      

  3.   

    难道做登陆不用cookie做吗? 我觉得好象都用的吧, 除非...session id? 恩, 有道理啊, 真是的, 有了session id我还去找timestamp干嘛
      

  4.   

    不用cookie(session)? 那用啥呢? 不会是form里包含了username, password吧
      

  5.   

    这样吧
    用户登陆之后检查时候检查是否有同名的用户在线
    如果有就kick out!! 呵呵 那么就是每时每刻都只有一个用户在线哟!说笑了 呵呵 其实 就是每次用户登陆都往一个数据表写点信息 如果数据表存在同名信息
    那么就给后请求的同名用户返回一个错误信息"已经有同一个用户在ip****使用本系统了,所以你的连接被喀嚓了:)"不过这样你就必须解决死尸问题
      

  6.   

    我是想让先登陆的被kick out哦.另外, kick out的做法也是值得讨论一下的. 如何kick呢? unset先登陆的session里注册的变量? 有其他什么好建议?什么是"死尸问题"? 请介绍一下, 谢谢
      

  7.   

    还有, 我希望一个graceful closure, 就是说, 在我关闭了先登陆的session后, 如果那个session还试图做什么操作, 我应该礼貌的告诉他:"您的帐号已经在另一个地方登陆了"
      

  8.   

    上面有人提到的记录session id的方法不错.我建议你不要把这个做得这么复杂...毕竟在web条件下, 很多东西实现起来有一定的困难.