• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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程序设计有所帮助。

    您可能感兴趣的文章:
    • easyswoole一键安装脚本及宝塔安装错误问题
    • thinkphp框架类库扩展操作示例
    • PHP框架实现WebSocket在线聊天通讯系统
    • thinkPHP框架乐观锁和悲观锁实例分析
    • 浅谈laravel框架与thinkPHP框架的区别
    • 自制PHP框架之设计模式
    • 自制PHP框架之模型与数据库
    • 自制PHP框架之路由与控制器
    • 详解PHP框架EasySwoole
    上一篇:laravel框架关于搜索功能的实现
    下一篇:PHP实现的数组和XML文件相互转换功能示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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