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代码
Dec 06 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
Oct 15 PHP
php模板函数 正则实现代码
Oct 15 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
分享10段PHP常用代码
Nov 11 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 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
ftp类(myftp.php)
2006/10/09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
执行iframe中的javascript方法
2008/10/07 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
Vue.js实现数据响应的方法
2018/08/13 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python编写一个优美的下载器
2018/04/15 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
致100米运动员广播稿
2014/02/14 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
学习交流会主持词
2014/04/01 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
平面设计专业求职信
2014/08/09 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
MySQL如何使备份得数据保持一致
2022/05/02 MySQL