php - TP3.2 使用者登入的時效問題
天蓬老师
天蓬老师 2017-06-15 09:22:30
0
1
1089

用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']error('登录过期,请重新登录','Rbac/Login/login'); }else{ // 刷新时间戳 $_SESSION['expire']=time()+600; } }
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆 (1)
左手右手慢动作

原理是:設定一個超時時長,如:600,登入時記錄好時間起點,每次頁面刷新,都要檢查是否超時(其實邏輯是:是否登入-是否超時-是否有權限),如果超時,則提示已「登入逾時請重新登入」並跳到登入頁,未逾時,表示使用者仍處於活動狀態,則重置計時起點$_SESSION['expire']=time() + 600

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!