PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】


Posted in PHP onMarch 15, 2018

本文实例讲述了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实现用户异地登录提醒功能的方法【基于thinkPHP框架】

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
laravel框架关于搜索功能的实现
Mar 15 #PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 #PHP
PHP实现生成推广海报的方法详解
Mar 14 #PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 #PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 #PHP
Laravel模型事件的实现原理详解
Mar 14 #PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 #PHP
You might like
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Python探索之修改Python搜索路径
2017/10/25 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
Python短信轰炸的代码
2020/03/25 Python
详解python with 上下文管理器
2020/09/02 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
《最大的麦穗》教学反思
2014/04/17 职场文书
入党积极分子评语
2014/05/04 职场文书
中央空调节能方案
2014/06/15 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
公积金接收函格式
2015/01/30 职场文书
2015年人事科工作总结
2015/04/28 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书