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

 更新时间:2018年03月15日 08:45:58   作者:江南极客  
这篇文章主要介绍了PHP实现用户异地登录提醒功能的方法,基于thinkPHP框架结合用户session实现异地登陆的判定功能,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • Laravel5.1框架路由分组用法实例分析

    Laravel5.1框架路由分组用法实例分析

    这篇文章主要介绍了Laravel5.1框架路由分组用法,结合实例形式分析了laravel5.1框架路由分组基本功能与相关共享属性使用技巧,需要的朋友可以参考下
    2020-01-01
  • PHP 面向对象程序设计之类属性与类常量实现方法分析

    PHP 面向对象程序设计之类属性与类常量实现方法分析

    这篇文章主要介绍了PHP 面向对象程序设计之类属性与类常量实现方法,结合实例形式分析了PHP 面向对象程序设计中类属性与类常量的具体功能、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 浅谈PHP中关于foreach使用引用变量的坑

    浅谈PHP中关于foreach使用引用变量的坑

    下面小编就为大家带来一篇PHP不使用递归的无限级分类的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • PHP命令行脚本接收传入参数的三种方式

    PHP命令行脚本接收传入参数的三种方式

    这篇文章主要介绍了PHP命令行脚本接收传入参数的三种方式,即把PHP脚本像Python脚本、Ruby脚本、Shell脚本一样,用来处理命令行程序,如何获取命令行中的参数,需要的朋友可以参考下
    2014-08-08
  • php 变量引用与变量销毁机制详细介绍

    php 变量引用与变量销毁机制详细介绍

    变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁吧,需要的朋友可以参考下
    2016-12-12
  • YII Framework框架教程之日志用法详解

    YII Framework框架教程之日志用法详解

    这篇文章主要介绍了YII Framework框架教程之日志用法,结合实例形式详细分析了Yii框架日志的配置,使用方法及相关注意事项,需要的朋友可以参考下
    2016-03-03
  • 神盾加密解密教程(二)PHP 神盾解密

    神盾加密解密教程(二)PHP 神盾解密

    前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 “神盾加密” , 牛逼闪闪的样子、 百度下发现神盾是个很古老的东西,最后一次更新是在 2012-10-09。和他相似的另一款是phpjm,有人说是神盾抄袭phpjm的,这些都不是我们所要关心的问题、phpjm一直在更新,而神盾貌似不搞了,我们分析下神盾,顺便写成工具,方便大家使用(因为他不更新,所以就不用担心解密工具失效问题了)。
    2014-06-06
  • Yii框架视图、视图布局、视图数据块操作示例

    Yii框架视图、视图布局、视图数据块操作示例

    这篇文章主要介绍了Yii框架视图、视图布局、视图数据块操作,结合实例形式分析了Yii框架相关的视图、布局、控制器及数据相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • CI框架中类的自动加载问题分析

    CI框架中类的自动加载问题分析

    这篇文章主要介绍了CI框架中类的自动加载问题,结合实例形式分析了CI框架中类的自动加载功能与具体操作技巧,需要的朋友可以参考下
    2016-11-11
  • Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】

    Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】

    这篇文章主要介绍了Laravel框架基础语法与知识点整理,包括模板变量、输出、include引入子视图等相关操作技巧,需要的朋友可以参考下
    2019-12-12

最新评论