PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
本文实例讲述了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,给出提醒:
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
- PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
- PHP实现的简单留言板功能示例【基于thinkPHP框架】
- PHP实现用户异地登录提醒
- Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
- PHP实现用户异地登录提醒
- 基于PHP实现用户注册登录功能
- 从此不求人:自主研发一套PHP前端开发框架(30) 实现简单的用户登录功能
- ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
- 基于PHP实现用户注册登录功能
- PHP永久登录、记住我功能实现方法和安全做法
- PHP+Mysql基于事务处理实现转账功能的方法
- shiro框架---关于用户登录和权限验证功能的实现步骤(七)
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- shiro框架---关于用户登录和权限验证功能的实现步骤(三)
- PHP-用ThinkPHP和Bootstrap实现用户登录设计
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
- 基于thinkPHP框架实现留言板的方法
- 使用PHP实现用户登录和注册的功能
- 基于SSM框架实现Ajxa实现搜索自动提醒功能
- 基于权限安全框架Shiro的登录验证功能实现