php權(quán)限調(diào)整強(qiáng)制用戶(hù)退出的解決步驟
php權(quán)限調(diào)整強(qiáng)制用戶(hù)退出的解決方案
要強(qiáng)制用戶(hù)重新登錄,你可以采取以下步驟:
- 當(dāng)用戶(hù)登錄時(shí),將用戶(hù)的登錄狀態(tài)和其他相關(guān)信息存儲(chǔ)在服務(wù)器端。例如,你可以將用戶(hù)ID、用戶(hù)名或其他標(biāo)識(shí)符存儲(chǔ)在服務(wù)器的會(huì)話(huà)(session)中。
- 當(dāng)管理員修改用戶(hù)的某些字段時(shí),確保在服務(wù)器端更新用戶(hù)的登錄狀態(tài)或其他相關(guān)信息。這樣,用戶(hù)的本地cookie與服務(wù)器上的信息就會(huì)保持一致。
- 在每次用戶(hù)請(qǐng)求頁(yè)面時(shí),驗(yàn)證用戶(hù)的登錄狀態(tài)。可以通過(guò)在服務(wù)器端檢查用戶(hù)的cookie或會(huì)話(huà)信息來(lái)完成驗(yàn)證。
- 如果管理員修改了用戶(hù)的某些字段,導(dǎo)致用戶(hù)的本地cookie與服務(wù)器上的信息不一致,你可以在服務(wù)器端檢測(cè)到這種不一致性。
- 當(dāng)檢測(cè)到不一致性時(shí),服務(wù)器端可以執(zhí)行適當(dāng)?shù)牟僮?,如清除用?hù)的會(huì)話(huà)信息或設(shè)置一個(gè)標(biāo)記,指示用戶(hù)需要重新登錄。
- 當(dāng)用戶(hù)再次訪(fǎng)問(wèn)頁(yè)面時(shí),服務(wù)器端會(huì)檢測(cè)到需要重新登錄的標(biāo)記,并將用戶(hù)重定向到登錄頁(yè)面或顯示適當(dāng)?shù)奶崾?,要求用?hù)重新登錄。
請(qǐng)注意,上述步驟是一種常見(jiàn)的方法,但具體的實(shí)現(xiàn)方式可能因你使用的框架或庫(kù)而有所不同。你可以根據(jù)自己的具體情況和需求進(jìn)行調(diào)整和修改。
function checkOfficeAuth() { //1.判斷是否已登錄; if (empty($_COOKIE["db_office_id"])) { redirect('index.php'); } //2.判斷子賬號(hào)的登錄權(quán)限變化時(shí),自動(dòng)退出 By woodCutter 2023-09-10 global $db; dbc(); $user_id = AuthCode($_COOKIE['db_perm_id'], "DECODE", "LOCKDATAV", ""); $row_user = $db->fetch('user', 'user_id,user_perm', array('user_id' => trim($user_id)), ' user_id DESC'); if ($_COOKIE['db_office_perm'] != $row_user["user_perm"]) { redirect('?m=Login&a=loginDeal&act=LoginOut'); } }
php(簡(jiǎn)1)后臺(tái)強(qiáng)制用戶(hù)退出
檢測(cè)用戶(hù)登錄狀態(tài):(思想):
一式:用戶(hù)的登陸信息記錄在一個(gè)表中,用戶(hù)登陸表增加一行,用戶(hù)退出,刪除那一行
二式:登錄標(biāo)識(shí):登錄成功后添加登錄標(biāo)識(shí)到數(shù)據(jù)表中,當(dāng)執(zhí)行強(qiáng)制退出就設(shè)置為0; 在基類(lèi)(刷新)中進(jìn)行檢測(cè):session(login_token), db(login_token),
代碼:采用第二種:token
// 步驟: // 1. 用戶(hù)登錄后:獲取標(biāo)識(shí): $login_token = uniqid(); // 2. 將標(biāo)識(shí)存入session $_SESSION['admin']['login_token'] = $login_token ; // 3. 數(shù)據(jù)表中(更新) $model->updateManagerById($login_token, $mid); // 4. 用戶(hù)登錄成功后, // 前端操作:點(diǎn)擊按鈕,設(shè)置登錄標(biāo)識(shí):0 $(function(){ // 點(diǎn)擊強(qiáng)制退出 $('.exit').on("click", function () { // 獲取manager id var manager_id = $(this).attr("data-id"); var manager_name = $(this).attr("data-name"); var d = $.dialog({ type: 'warning', message: '你確認(rèn)要強(qiáng)制退出管理員:' + manager_name + ' ?', buttons: [ { text: '確認(rèn)', type: 'primary', callback: function () { // 執(zhí)行按manager_id 強(qiáng)制退出 exitManagerById(manager_id); } }, { text: '取消', type: 'cancel', callback: function () { d.close(); return false; } } ] }); }); // 按manager_id 強(qiáng)制退出管理員 function exitManagerById(manager_id) { $.ajax('/manager/exit', { type: 'POST', data: {manager_id: manager_id}, dataType: 'json', success: function (data) { console.log(data); if (data.code == 1) { $.dialog({ type: 'success', delay: 2000, delayShow: 0, message: data.message, delayCallback: function () { location.href = data.data.href } }) } else { $.dialog({ type: 'warning', delay: 2000, delayShow: 0, message: data.message }) } } }) } }); // 5. 后端:思想:用戶(hù)的每個(gè)操作都會(huì)調(diào)用的類(lèi)(基類(lèi))里添加一個(gè)方法,并調(diào)用(刷新) // 調(diào)用 function __construct(){ // 強(qiáng)制退出 self::checkLoginToken(); } /** * 檢測(cè)登錄標(biāo)識(shí)狀態(tài):session 中的login_token是否一致 * 1. 根據(jù)manager_id 獲取login_token * 2. 根據(jù)從數(shù)據(jù)庫(kù)查出的login_token 與sessin 中的login_token 進(jìn)行對(duì)比。除超級(jí)管理員 */ public function checkLoginToken(){ // 1. 根據(jù)manager_id 獲取login_token $model = ModelFactory::M('ManagerModel'); $token = $model->getManagerById($_SESSION['admin']['manager_id'])['login_token']; // 2. 根據(jù)從數(shù)據(jù)庫(kù)查出的login_token 與sessin 中的login_token 進(jìn)行對(duì)比 if($token != $_SESSION['admin']['login_token']){ unset($_SESSION['admin']); header("Location:/manager/login"); } }
注:[dialog] 是一個(gè)jquery 框架
到此這篇關(guān)于php權(quán)限調(diào)整強(qiáng)制用戶(hù)退出的解決方案的文章就介紹到這了,更多相關(guān)php強(qiáng)制用戶(hù)退出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP實(shí)現(xiàn)與java 通信的插件使用教程
這篇文章主要介紹了PHP與java 通信插件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2019-08-08PHP循環(huán)結(jié)構(gòu)實(shí)例講解
這篇文章主要介紹了PHP循環(huán)結(jié)構(gòu)實(shí)例講解,需要的朋友可以參考下2014-02-02php如何把表單內(nèi)容提交到數(shù)據(jù)庫(kù)
這篇文章主要介紹了php如何吧表單內(nèi)容提交到數(shù)據(jù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07PHP實(shí)現(xiàn)生成透明背景的PNG縮略圖函數(shù)分享
這篇文章主要介紹了PHP實(shí)現(xiàn)生成透明背景的PNG縮略圖函數(shù)分享,需要的朋友可以參考下2014-07-07又一個(gè)PHP實(shí)現(xiàn)的冒泡排序算法分享
這篇文章主要介紹了又一個(gè)PHP實(shí)現(xiàn)的冒泡排序算法分享,標(biāo)題中的又一個(gè)是指本站已經(jīng)有好幾篇冒泡排序算法的文章了,如果這個(gè)沒(méi)有滿(mǎn)足你的要求,請(qǐng)看相關(guān)文章里的其他實(shí)現(xiàn)方法吧,需要的朋友可以參考下2014-08-08微信公眾號(hào)開(kāi)發(fā)之獲取位置信息php代碼
這篇文章主要為大家詳細(xì)介紹了微信公眾號(hào)開(kāi)發(fā)之獲取位置信息php代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06PHP調(diào)用.NET的WebService 簡(jiǎn)單實(shí)例
這篇文章主要介紹了使用PHP調(diào)用.NET的WebService的一個(gè)簡(jiǎn)單實(shí)例,十分的簡(jiǎn)單,有需要的小伙伴可以自己擴(kuò)展下,如有疑問(wèn)請(qǐng)留言。2015-03-03wordpress網(wǎng)站轉(zhuǎn)移到本地運(yùn)行測(cè)試的方法
這篇文章主要為大家詳細(xì)介紹了wordpress網(wǎng)站轉(zhuǎn)移到本地運(yùn)行測(cè)試的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03用 Composer構(gòu)建自己的 PHP 框架之使用 ORM
經(jīng)過(guò)前三篇文章 基礎(chǔ)準(zhǔn)備 、 構(gòu)建路由 和 設(shè)計(jì) MVC ,我們已經(jīng)得到了一個(gè)結(jié)構(gòu)比較完整的 MVC 架構(gòu)的 PHP 微框架,但是距離一個(gè)真正能夠上手使用的框架還差一樣?xùn)|西: 數(shù)據(jù)庫(kù)封裝 ,本篇就將講述如何集成一個(gè) ORM Composer 包2014-10-10