用tp3.2做後台管理,在做用戶登入時遇到一個問題.
1.後台用戶登入之後,一直有效,放了一中午,關掉瀏覽器,用戶登入狀態一直存在,只有點擊登出時才能實現用戶的過期.
不是php的session有效期預設是1440秒(24分鐘),如果客戶端超過24分鐘沒有刷新,當前session會被回收,失效嗎,為啥一直都有效了?
2.用tp怎麼實現使用者登入的時效性問題:使用者不操作的時候,固定時間後自動時效.怎麼實現了.
我的登入部分的程式碼:
if(IS_POST){ $uname=I('post.uname'); $password=md5(I('post.password')); $res=M('manager')->where("uname='{$uname}'")->find(); if(is_null($res)) { $this->error("用户名不存在"); return false; } if($res['uname']==$uname&&$res['password']==$password){ $_SESSION['uname']=$res['uname']; $_SESSION['expire']=time()+600; $this->success('登录成功',U('Rbac/Index/index')); exit(); } $this->error("登录失败"); }
我百度看的思路是利用$_Session['expire']來實現,但是我不知道這段程式碼放在什麼位置合適,放在登入檢查時不合適吧,該放在什麼位置了?
// 设置用户登录session登录限制时间 if(isset($_SESSION['expire'])){ if($_SESSION['expire']
原理是:設定一個超時時長,如:600,登入時記錄好時間起點,每次頁面刷新,都要檢查是否超時(其實邏輯是:是否登入-是否超時-是否有權限),如果超時,則提示已「登入逾時請重新登入」並跳到登入頁,未逾時,表示使用者仍處於活動狀態,則重置計時起點
$_SESSION['expire']=time() + 600
。