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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
一周让你学会PHP 不错的学习资料
Feb 06 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
简单的用PHP编写的导航条程序
2006/10/09 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
use jscript List Installed Software
2007/06/11 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python中input与raw_input 之间的比较
2017/08/20 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
毕业生幼师求职自荐信
2013/10/01 职场文书
青蓝工程实施方案
2014/03/27 职场文书
代办出身证明书
2014/10/21 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
周末问候语大全
2015/11/10 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
vue中data里面的数据相互使用方式
2022/06/05 Vue.js
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技