php登錄超時檢測功能實例詳解
php登錄超時檢測功能實例詳解
前言:
php登錄超時問題,當(dāng)用戶超過一定時間沒有操作頁面時自動退出登錄,原理是通過js進(jìn)行訪問判斷的!代碼如下(以thinkphp5.0版本為例)
1、創(chuàng)建登錄版塊控制器:
<?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(); //這里為登錄驗證(自行補充) ....... //通過登錄提交的信息獲取數(shù)據(jù)庫中的用戶,并記錄ID($id) cookie('ADMIN_ID',$result["id"]);//cookie緩存 cookie('LOGIN_TIME',Request::instance()->time()+3600);//記錄登錄時間,并緩存1小時 } return view(); } // 檢測是否登錄超時(js調(diào)用,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、創(chuàng)建公共控制器(所有需要驗證登錄的控制器都繼承該控制器)
<?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();//當(dāng)前時間 //判斷當(dāng)前時間是否大于緩存時間 或者 超時時間小于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);//設(shè)置1小時自動執(zhí)行 loginLosetime 函數(shù)(時間可自行調(diào)整) }); // 登錄超時檢測 function loginLosetime(){ $.get(AJAX_URL+'main/loginLosetime',function(res){ if(res.code == 1){ window.location.href = res.url; } }); }
最后在所有的頁面調(diào)用上訴js文件即可,登錄頁面可不用調(diào)用!
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
php構(gòu)造函數(shù)與析構(gòu)函數(shù)
PHP析構(gòu)函數(shù)與構(gòu)造函數(shù)是相反的,它們被調(diào)用來一個對象從內(nèi)存中銷毀,幫助我們釋放對象屬性所占用的內(nèi)存并銷毀對象相關(guān)的資源。2016-04-04PHP使用get_headers函數(shù)判斷遠(yuǎn)程文件是否存在的方法
這篇文章主要介紹了PHP使用get_headers函數(shù)判斷遠(yuǎn)程文件是否存在的方法,以實例形式分析了使用get_headers函數(shù)對遠(yuǎn)程文件是否存在進(jìn)行判斷的方法,以及針對重定向的排除方法,非常具有實用價值,需要的朋友可以參考下2014-11-11php實現(xiàn)通過soap調(diào)用.Net的WebService asmx文件
這篇文章主要介紹了php實現(xiàn)通過soap調(diào)用.Net的WebService asmx文件,結(jié)合實例形式分析了php使用soap實現(xiàn)WebService接口的調(diào)用技巧,需要的朋友可以參考下2017-02-02PHP WebSocket的技術(shù)解析與使用指南詳解
在這篇文章中我們將深入討論從建立連接、綁定到監(jiān)聽等各方面的操作,并提供易于理解和實踐的指導(dǎo),希望可以幫助大家掌握在PHP中使用WebSocket的關(guān)鍵概念和技術(shù)2024-02-02php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究
這篇文章主要介紹了php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02用php或asp創(chuàng)建網(wǎng)頁桌面快捷方式的代碼
上傳到網(wǎng)站,shortcut.php 就會有提示下載一個名為 張楚網(wǎng)站.urll文件,保存在本地就是一個快捷方式!2010-03-03