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

  1. java spring 登录验证_浅析Spring Security登录验证流程源码

    一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...

  2. python登录验证程序_python – 测试Flask登录和身份验证?

    我正在开发一个Flask应用程序,并使用Flask-security进行用户身份验证(其又使用Flask-login在下面). 我有一个需要身份验证的路由,/ user.我正在尝试编写一个单元测试,测 ...

  3. ad域服务器用户登录限制,AD域监控用户登录, 活动目录监控用户, AD登录历史审核...

    实时监控用户登录操作 用户登录到其域计算机是在任何企业都会发生的日常活动.一开始,这看起来可能是一个简单的Active Directory事件,但分配有不同角色的管理员可将这个宝贵的数据用于各种审核. ...

  4. oracle 登录失败次数,Oracle用户连续登录失败次数限制如何取消

    当用户连续登录失败次数过多时,Oracle会锁定该用户,"FAILED_LOGIN_ATTEMPTS"用于设置最大次数,超过该值则锁定该帐号. 要取消用户连续登录失败次数的限制可以 ...

  5. 基于ThinkPHP框架下登录登出权限控制(一).

    后台管理员表中 做一个加盐处理 md5双从加密: function encrypt_password($password){//加盐$salt = '98765435678908bnjuiygvbnk ...

  6. thinkphp 微信服务器验证代码_【表哥有话说 第27期】ThinkPHP框架漏洞梳理

    0x00. 前言 ThinkPHP被认为是PHP入门级框架.作为菜鸡的我,据破神经验,寒假打算系统学习一下ThinkPHP框架开发及梳理其安全问题.恰逢契机,写篇文章梳理一下ThinkPHP. 因为是 ...

  7. linux主机邮件提醒,Linux用户登陆邮件提醒功能怎么设置?

    为了服务器的安全起见,我们在用户登陆的时候就发一份邮件进行提醒,不管是正常的用户登陆还是从其他地方进行登陆的用户,下面小编与大家分享一下如何做好Linux用户登陆的邮件提醒功能,希望对大家有所帮助,谢 ...

  8. php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法

    有时候你的网站账号被盗或你在别处登录操作后台时,右下角会弹出提示信息,提醒你的账号异地登录,或者会被强制下线.对于这种安全性要求比较高的web网站,很多后台管理都会做这种功能提醒. 甄别自己的账号是否 ...

  9. WebApi用户登录验证及服务器端用户状态存取

    最近项目需要给手机端提供数据,采用WebApi的方式,之前的权限验证设计不是很好,这次采用的是Basic基础认证. 1.常见的认证方式 我们知道,asp.net的认证机制有很多种.对于WebApi也不 ...

最新文章

  1. 使用arthas采集火焰图
  2. fanuc机器人与plc的通讯_S7-1200PLC与FANUC机器人Profinet通讯方法
  3. python学习之面向对象(三)
  4. 3.JAVA基础复习——JAVA中的类与对象
  5. boost::remove_edge_if用法的测试程序
  6. TCPDUMP for Android(抓TCP数据包工具)
  7. 直接输出代码_php代码:实时输出缩小的图像
  8. 《银狐》:对自然精神的尊重与回归
  9. 综合时如何插入scan_三综合环境试验箱维修时如何做出正确判断?
  10. 同济大学自动化与计算机科学,同济大学本科专业选通信工程好,还是选自动化好呢?...
  11. JavaScript 基础知识 表达式和运算符
  12. k8s ingress配置自签名证书,并解决Kubernetes Ingress Controller Fake Certificate
  13. mysql数据库双机备份_配置MySQL数据库双机热备份(转)
  14. Cocos2d-x游戏开发之骨骼动画详解-Spine
  15. 怎么知道服务器是否正版,盗版太坑爹!五招识别Win7旗舰版正版
  16. 12/27复习有感--整环的整除性
  17. 我的世界服务器成就系统的其他成就是什么,大量的成就奖励亟待领取!《我的世界》【PC版】Hypixel服务器成就系统来啦~...
  18. 能看到打印机共享文件就是不能连接网络打印机
  19. ideagit更新一个文件_IDEA 配置 Git,GitHub, 获取项目, 更新项目 (Windows 版本)
  20. 【springboot错误】 Failed to instantiate [org.springframework.transaction.interceptor.BeanFactoryTransac

热门文章

  1. Oracle闪回技术(Flashback)
  2. PHP获取当前页面的完整URL
  3. IT人终于把自己熬成了民工
  4. 8-13 主观下线和客观下线
  5. 85.一致性哈希算法:hash模块
  6. strcpy会覆盖原来的吗_你真的会挂单吗?原来“集合竞价”10分钟竟然隐藏这么多秘密,看懂这些细节,直接精准判整日走势...
  7. 在线图像识别相似图片_宋源:图像识别传感器在制桶设备上的应用(附视频)...
  8. 【写作技巧】毕业论文写作意义
  9. 基于Bokeh库,手把手教你制作“子弹图“和“瀑布图“!
  10. Python+OpenCV:Canny边缘检测