一个用PHP写的网站,当两个人同时用一个账号登录时,后一个会将前一个账号挤下线。请问大神们怎么实现!!!谢谢!

解决方案 »

  1.   

    思路:使用session控制,加入sessionID及登陆状态控制
    判断登陆sessionID是否一致,不一致则断掉之前的sessionID
      

  2.   

    你如果用DB进行数据存储,就在用户表中加入一个sessionID的项目
    网上找的,session直接存DB的方法.
    http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4002.html
    如果不能设置php.ini文件则考虑登陆后写用户表中sessionID.
    相同用户再登陆时,在登陆判断时如果密码用户名没问题,但是sessionID存在则重写sessionID的同时,取得session_name(原ID)后重置登陆状态~
      

  3.   

    看你采用哪种方式,可以改php.ini还是自己操作.
    如果自己操作则就在USER表中追加sessionID列名后,再进行操作即可.
      

  4.   

    方法有很多,但思路是一致的。需要一个session id,与用户信息绑定。比如3L的说法,在users表内加一个sessionId字段,在用户访问时将cookies里面的sessionId与数据表里的sessionId比较下,不同就是非法访问,这时候踢下线就是把sessionId置空。也可以单独创建一个 sessions 表,在里面记录用户ID与对应的session id ,登陆时查询下记录——这样的好处是支持多个地方同时登录同一个用户。T下线的方法是删除sessions表里对应的session id或用户ID。
      

  5.   

    楼上正解,用sessionID 来实现单点登录
      

  6.   

    是的,判断sessionid唯一值就好了
      

  7.   

    每次登陆后保存sessionId 到数据库,操作任何动作的时候 检查保存的sessionid和当前的sessionid是否一致,不一致就执行退出程序(清除session)     
      

  8.   

    简单的做法就是。记录每次登录,登录记录session, 每次执行的时候合法性效验
      

  9.   

    session可以存mc redis 不影响性能
      

  10.   

    我给你一个思路 
    做一个随机数 , 每次登陆产生一个随机数保存到数据库中,也保存一份到COOKIES里面,或者SESSION里面都可以 
    然后做一个读取对比的功能
    如果COOKIES的和数据库中的不一样, 就说明有人登陆了 
      

  11.   

    session.sessionID  基本上就是唯一的随机数