• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP实现同一个帐号不允许多人同时登陆代码分享

php 搞代码 3年前 (2022-01-22) 23次浏览 已收录 0个评论

权限验证的时候一定要判断数据库写入session_id是不是和$_session里面的session_id是不是一致,如果不一致就退出,这个防止同一个账户被多个人同时登陆的实现方法就是基于这个session_id。

一定要设置session的存活时间,和session关掉页面就session消除
如果有其他人登陆的时候,会写入新的session_id,这样旧的用户就会被权限验证不通过,但是不能做到实时效果,这样就挤掉了旧用户,这里有个缺陷,就是每次验证权限的时候就需要查询数据库,如果可以吧这个数据放在redis就比较好
其实其他的验证方法,也类似使用这种方法,有个验证的凭证,只不过这种方法需要查询数据库,但是放在redis之后就比较好
或者统一管理session的时候,比如放在数据库就更好了,记住吧session_id也存入数据库,或者放在memcash,redis就比较方便,比如在redis进行管理的时候,就可以直接更新掉存在session_id

首先设计表:

1 id int(11) AUTO_INCREMENT2 username varchar(20) utf8_general_ci3 password varchar(20) utf8_general_ci 4 ip varchar(20) utf8_general_ci5 session_id varchar(100) utf8_general_ci6 login_time int(20)

实现:

public function aa(){           session_start();          //ini_set('session.auto_start', 0);                    //关闭session自动启动          //ini_set('session.cookie_lifetime', 0);//设置session在浏览器关闭时失效          //ini_set('session.gc_maxlifetime', 3600);  //session在浏览器未关闭时的持续存活时间             $uname =$_GET['name'];         $data['name'] = $uname;         $upwd =$_GET['pwd<div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>'];         $data['pwd'] = $upwd;           //$data['ip'] = $_SERVER['REMOTE_ADDR'];                          //print_r($ipdress);die;         //$data['login_time'] = time();//登陆时间更新           //$data['session_id'] = session_id();           //$_SESSION['name']=$_GET['name'];           //$res = M("onlyuser")->add($data);         //if($res){             //echo "ok";         //}else{             //echo "false";         //}         //开始验证 --防止同一个用户重复登录  nbsp;$res = M("onlyuser")->where("name = '$uname' AND pwd = '$upwd'")->find();           if($res){                    //    var_dump($s);                   //    echo '<br>';                  //    echo session_id();             if($res['session_id'] === session_id()){                 //unset($s['session_id']);                 echo "ok";             }  else {                 $ipdress = $_SERVER['REMOTE_ADDR'];                 $login_time = time();                 $session_id = session_id();//重新赋予一个session_id                 $sql = "update user set ip = '$ipdress',login_time= '$login_time',session_id = '$session_id'";                 $result1 =mysql_query($sql);                 // $ss = mysql_fetch_array($result);                 if($result1){                     echo 'OK';                   }  else {                     echo 'F';                 }             }               }else {               echo 'FFFFFFFFFFFFFFFFFFFFFFF';             }       }

相关推荐:

怎样防止一个用户名重复登陆,该如何处理

以上就是PHP实现同一个帐号不允许多人同时登陆代码分享的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP实现同一个帐号不允许多人同时登陆代码分享
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址