基于mysql+php实现,尽量减少数据包的开销。

解决方案 »

  1.   

    1、用户登录时建存一个以该用户命名的密钥文件,如“路径/urlencode(用户名).txt”,同时写入一随机字符串,该字符串同时存入cookie,验证用户身份时对比二者。
    2、当同时异地有登录时,上述密钥文件必然更改,则前者登录失效。
      

  2.   

    前一个用户登录的不是保存了session吗?后一个用户登录的时候你就可以判断session值啊,如果存在就不让登录。
    //第一次登录保存session值
    $_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。//第二次登录判断
    if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){   //此处的$_POST['username']为第二个用户输入的用户名
                echo '改用户名已登录'; 
    }else{
              echo '登录成功';
              $_SESSION['user']=$_POST['username'];
    }
      

  3.   

    更正,忘了写退出://第一次登录保存session值
     $_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。 //第二次登录判断 
    if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){ //此处的$_POST['username']为第二个用户输入的用户名
           echo '该用户名已登录';
           exit();
     }else{ 
           echo '登录成功';
           $_SESSION['user']=$_POST['username'];

      

  4.   


    已经登录帐号Js.Ajax 定时发送数据库记录时间,新帐号登录时判断多长时间没有刷新数据库时间算掉线 /关闭浏览器等.然后做相应的动作. 这样做比较耗资源 但是最完美了
      

  5.   

    加个在线判断字段。0离线,1在线。登录后,session[name]=name,session[online]=1当该账号session[online]=1时,
    不允许重复登录。就可以实现你的这个功能了。前面有人在同一个浏览器下设定,其实不需要。
      

  6.   

    可以在数据库设置两个字段:是否登录,最后一次操作时间。新登录的时候看是否已登录,并判断最后一次操作时间是否超过session时间。不过这样每次操作都需要改变数据库,可能会有性能影响。
      

  7.   

    估计不能用php自己的$_SESSION,可以用mysql自己维护session,当前一个用户登录后,以用户id为主键创建一条记录,第二个用户再登录,只要在数据库中存在这个用户id,就可以禁止登录,否则允许登录。
      

  8.   

    有没有想过这样做的后果?如果你session时间定为1个小时: 我登陆了,死机了,我重启,登陆,被拒绝必须要等一个小时才能重新登陆?
      

  9.   

    我也同意可能会出现这个问题,所以我觉得应该跟踪记录用户的ip地址,否则像这种网页的东西一不小心关了,用户浏览器设置的是关闭清除缓存,那么就彻底悲剧了,一登陆就同一账户已经登录。可以在数据库里面存一个ip的表。
      

  10.   

    跟php替你做的一样,定时清理啊,本来就是用mysql自维护session,当然这部分要自己来做了。比如每15分钟清理一次不活动的用户,用户下线即时清理,用户每刷新一次页面要重新写一次表记录状态,数据表用mem格式。觉得占资源,不用mysql,直接用memcache。
      

  11.   

    承接2楼:异地登录判断“路径/urlencode(用户名).txt”的生成时间filemtime('路径/urlencode(用户名).txt'),比如,前者登录如超过1小时(假设1小时),就可以把前者挤掉,不足1小时,异地登录不上。
      

  12.   

    session 知道不呢   楼上有说了  
      

  13.   

     支持用memcache 共享session  登陆是去memcache 里面判断是否存在此用户的session信息.....
      

  14.   


    将用户登录信息保存到Memcached中,再使用Cookies在客户端记录登录状态并存入Memcached中,当第二个用户登录时,判断一下账号是否已经登录,再进行后续操作
      

  15.   

    顶2楼的做法.而且用户体验上也是如此.而判断函数可以用时间文件函数filemtime来判断是否被修改,这个是以空间换效率的一个方法,不过一个文件对应一个账号,对空间需求太高了.如果能在空间上解决,这个问题就完美了.
      

  16.   

    2楼的方法应该是比较好的了,虽然没有达到楼主的要求,但是我觉得还是应该后登陆的挤掉前面的。。这个逻辑比较正常。其它方法不管是session还是Memcached都需要判断有效期的问题,如果长时间不操作,就自动掉线了要是有效期过长的话,你关闭浏览器不做退出操作,又产生问题了。。
      

  17.   

    学习2L的方法,lz的想法不合理