PHP用户异地登录提醒实现代码
程序员文章站
2022-03-15 16:47:19
...
这次给大家带来PHP用户异地登录提醒实现代码,PHP用户异地登录提醒实现的注意事项有哪些,下面就是实战案例,一起来看一下。
对于安全性要求比较高的web网站,特别是后台管理,有时候需要甄别自己的账号是否被盗或者是否有另一个人此刻登陆了在进行后台操作,这些都会很不安全,为了避免两个人同时登录同时操作,可以强制下线一个账号。
通过IP判断当然是不行的,因为IP是随时会在某一个网段内变化的,但是有一个机制,恰巧可以解决这个,那就是session,只要使用同一个浏览器访问网站,浏览器不关闭每个来访者的session_id是不变的,这也正是解决这个问题需要的。
以TP框架搭建的网站后台为例,思路如下:
(1)数据库用户表
在user表中,增加一个字段`session_id` varchar(32)
,用来存放登录之后的session_id。
(2)用户登录
用户登录,就是正常的判断账号密码以及验证码,当这些都验证通过的时候,取出当前的session_id存入数据库user表中。
M('user')->where(array('id'=>$_SESSION['uid']))->save(array('session_id'=>session_id()));
(3)解决异地登录问题
对于后台操作,为了便于验证和操作安全,基本都会先创建一个基础控制器BaseController,然后后台的其他操作控制器都继承这个基础控制器。对于后台的每一步操作之前,用户状态的检测都放在BaseController控制器的初始化_initialize()
方法中。
现在在_initialize()
方法中,除了验证用户登录状态是否被锁定等等,还要取出本地session_id和存放在user表中的session_id进行比对,如果对不上那么表名账号在异地有登陆,这时候可以迫使强制下线,退回到登录页面。
$user = M('user')->where(array('id'=>$_SESSION['uid']))->find(); $session_id = session_id(); if($user['session_id'] != $session_id){ session_destroy(); $this->error('您的账号在其他地方登录,您已经被强制下线', U('login')); }
当然也可以获取到异地登陆的IP,给出提醒:
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
以上就是PHP用户异地登录提醒实现代码的详细内容,更多请关注其它相关文章!
推荐阅读
-
php websocket 实现登录用户,点对点通信,该如何处理
-
discuz论坛 用户登录 后台程序代码_php实例
-
PHP中使用crypt()实现用户身份验证的代码_PHP教程
-
PHP根据session与cookie用户登录状态操作类的代码
-
php同时使用session和cookie来保存用户登录信息的实现代码
-
application作用域实现用户登录挤掉之前登录用户代码
-
php识别微信客户端并且使用html静态页面引导用户使用浏览器打开这个页面(代码实现教程)
-
PHP实现用户登录的案例代码
-
Laravel 微信小程序后端实现用户登录的示例代码
-
php识别微信客户端并且使用html静态页面引导用户使用浏览器打开这个页面(代码实现教程)