php登录超时检测功能实例详解


Posted in PHP onMarch 21, 2017

php登录超时检测功能实例详解

前言:

php登录超时问题,当用户超过一定时间没有操作页面时自动退出登录,原理是通过js进行访问判断的!代码如下(以thinkphp5.0版本为例)

1、创建登录版块控制器:

<?php
namespace app\manage\control;
use \think\Controller;

class Main extends Controller{

 protected $request;

 public function _initialize(){
 $this->request = \think\Request::instance();
 }

 public function login(){
 if($this->request->method() == "POST"){
 $data = $this->request->param();
   //这里为登录验证(自行补充)
   .......
   //通过登录提交的信息获取数据库中的用户,并记录ID($id)
   cookie('ADMIN_ID',$result["id"]);//cookie缓存
   cookie('LOGIN_TIME',Request::instance()->time()+3600);//记录登录时间,并缓存1小时

 }
 return view();
 }
 
 // 检测是否登录超时(js调用,url为:http://您的域名/manage/main/loginLosetime)
 public function loginLosetime(){
 $logintime = cookie('LOGIN_TIME');
 $time = request()->time();
 if($time > $logintime){
 return json(['code'=>1,'msg'=>'登录超时!','url'=>url('main/login')]);
 }else{
 return json(['code'=>0]);
 }
 }

}

2、创建公共控制器(所有需要验证登录的控制器都继承该控制器)

<?php

namespace app\common\control;
use \think\Controller;
class AdminBase extends Controller{
 protected $request;
 public function _initialize(){
 parent::_initialize();
  $this->request = \think\Request::instance();
 $this->checkLogin();//检测登录
 $this->doAction();//记录动作
 }
 protected function checkLogin(){

 $cookie_admin_id = cookie('ADMIN_ID');
 if(!empty($cookie_admin_id)){
 //获取登录用户信息
   .......
 }else{
 if($this->request->isAjax()){
 return $this->error('您还没有登录!',url('main/login'));
 }else{
 header("Location:".url("main/login"));
 exit();
 }
 }
 }
 // 页面操作记录
 protected function doAction(){
 $logintime = cookie('LOGIN_TIME');//获取缓存登录超时时间
 $time = request()->time();//当前时间
  //判断当前时间是否大于缓存时间 或者 超时时间小于60秒后,自动多加1个小时时间
 if($time > $logintime || ($time - $logintime) < 60){
 $newLogintime = $logintime + 3600;
 cookie('LOGIN_TIME',$newLogintime);
 }
 }
}

3、js文件

$.ajaxSetup({
 cache: false
});
$(function(){
 setInterval(function() {
 loginLosetime()
 }, 360000);//设置1小时自动执行 loginLosetime 函数(时间可自行调整)
});
// 登录超时检测
function loginLosetime(){
 $.get(AJAX_URL+'main/loginLosetime',function(res){
 if(res.code == 1){
 window.location.href = res.url;
 }
 });
}

最后在所有的页面调用上诉js文件即可,登录页面可不用调用!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
一个高ai的分页函数和一个url函数
Oct 09 PHP
php如何调用webservice应用介绍
Nov 24 PHP
thinkphp实现数组分页示例
Apr 13 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHPstorm快捷键(分享)
Jul 17 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 PHP
php base64 编码与解码实例代码
Mar 21 #PHP
详解PHP中的序列化、反序列化操作
Mar 21 #PHP
php实现文件管理与基础功能操作
Mar 21 #PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 #PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 #PHP
php中通过eval实现字符串格式的计算公式
Mar 18 #PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 #PHP
You might like
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
js继承的实现代码
2010/08/05 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
python str与repr的区别
2013/03/23 Python
Python中的多重装饰器
2015/04/11 Python
简单了解Python中的几种函数
2017/11/03 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
基本款天堂:Everlane
2017/05/13 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
应届生煤化工求职信
2013/10/21 职场文书
物流专员岗位职责
2014/02/17 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
高考励志标语
2014/06/05 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
2014年店长工作总结
2014/11/17 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书