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 相关文章推荐
example1.php
Oct 09 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
php字符串截取的简单方法
Jul 04 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
php检测useragent版本示例
Mar 24 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
详解PHP中的状态模式编程
Aug 11 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 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
综合图片计数器
2006/10/09 PHP
珊瑚虫IP库浅析
2007/02/15 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP实现微信发红包程序
2015/08/24 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
python交互式图形编程实例(三)
2017/11/17 Python
windows下python安装小白入门教程
2018/09/18 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
查环查孕证明
2014/01/10 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
商家认证委托书格式
2014/10/16 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2015年人事科工作总结
2015/04/28 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android
vue判断按钮是否可以点击
2022/04/09 Vue.js
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server