在tp中实现单个用户禁止重复登录
来源:互联网 发布:linux搭建局域网 编辑:程序博客网 时间:2024/05/14 19:05
原理:
权限验证的时候一定要判断数据库写入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_INCREMENT
2 username varchar(20) utf8_general_ci
3 password varchar(20) utf8_general_ci
4 ip varchar(20) utf8_general_ci
5 session_id varchar(100) utf8_general_ci
6 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']; $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"; //} //开始验证 --防止同一个用户重复登录 $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'; } }
阅读全文
1 0
- 在tp中实现单个用户禁止重复登录
- ASP.NET实现禁止用户重复登录
- 使用session监听禁止用户重复登录
- (转)监听器学习-监听器实现禁止不同IP相同用户的重复登录
- ASP.NET中实现用户不可重复登录
- ASP.NET中实现用户不可重复登录
- 在windows2003中禁止某个用户从本地登录的方法
- tp 用户登录日志记录
- j2ee实现强行挤掉重复登录用户
- 用户不可重复登录 java实现
- Linux禁止用户登录
- Linux禁止用户登录
- Linux禁止用户登录
- Linux禁止用户登录
- Linux 禁止用户登录
- Linux禁止用户登录
- session过滤单个用户登录
- 禁止用户重复登陆的多种实现方式
- Apache服务器和tomcat服务器有什么区别?
- LaTeX入门
- Windows读取文件的版本信息
- kali linux攻击机及windowsXp/Metasploit_linux靶机安装及在此基础上的蜜罐系统搭建(上)
- 学习Hadoop遇到的问题
- 在tp中实现单个用户禁止重复登录
- Beego应用开发01
- Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)
- 2017 上半年最酷,最受欢迎的30 个 Android 库
- iOS中集成ijkplayer视频直播框架
- 用Runtime.getRuntime().exec()需要注意的地方
- uuid 生成方法
- 微服务框架选择:Spring Cloud还是Dubbo?
- 剑指offer-操作给定的二叉树,将其变换为源二叉树的镜像