PHP實(shí)現(xiàn)用戶異地登錄提醒功能的方法【基于thinkPHP框架】
本文實(shí)例講述了PHP實(shí)現(xiàn)用戶異地登錄提醒功能的方法。分享給大家供大家參考,具體如下:
對于安全性要求比較高的web網(wǎng)站,特別是后臺管理,有時(shí)候需要甄別自己的賬號是否被盜或者是否有另一個(gè)人此刻登陸了在進(jìn)行后臺操作,這些都會很不安全,為了避免兩個(gè)人同時(shí)登錄同時(shí)操作,可以強(qiáng)制下線一個(gè)賬號。
通過IP判斷當(dāng)然是不行的,因?yàn)镮P是隨時(shí)會在某一個(gè)網(wǎng)段內(nèi)變化的,但是有一個(gè)機(jī)制,恰巧可以解決這個(gè),那就是session,只要使用同一個(gè)瀏覽器訪問網(wǎng)站,瀏覽器不關(guān)閉每個(gè)來訪者的session_id是不變的,這也正是解決這個(gè)問題需要的。
以TP框架搭建的網(wǎng)站后臺為例,思路如下:
(1)數(shù)據(jù)庫用戶表
在user表中,增加一個(gè)字段`session_id` varchar(32)
,用來存放登錄之后的session_id。
(2)用戶登錄
用戶登錄,就是正常的判斷賬號密碼以及驗(yàn)證碼,當(dāng)這些都驗(yàn)證通過的時(shí)候,取出當(dāng)前的session_id存入數(shù)據(jù)庫user表中。
M('user')->where(array('id'=>$_SESSION['uid']))->save(array('session_id'=>session_id()));
(3)解決異地登錄問題
對于后臺操作,為了便于驗(yàn)證和操作安全,基本都會先創(chuàng)建一個(gè)基礎(chǔ)控制器BaseController,然后后臺的其他操作控制器都繼承這個(gè)基礎(chǔ)控制器。對于后臺的每一步操作之前,用戶狀態(tài)的檢測都放在BaseController控制器的初始化_initialize()
方法中。
現(xiàn)在在_initialize()
方法中,除了驗(yàn)證用戶登錄狀態(tài)是否被鎖定等等,還要取出本地session_id和存放在user表中的session_id進(jìn)行比對,如果對不上那么表名賬號在異地有登陸,這時(shí)候可以迫使強(qiáng)制下線,退回到登錄頁面。
$user = M('user')->where(array('id'=>$_SESSION['uid']))->find(); $session_id = session_id(); if($user['session_id'] != $session_id){ session_destroy(); $this->error('您的賬號在其他地方登錄,您已經(jīng)被強(qiáng)制下線', U('login')); }
當(dāng)然也可以獲取到異地登陸的IP,給出提醒:
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php實(shí)現(xiàn)自動(dòng)獲取生成文章主題關(guān)鍵詞功能的深入分析
本篇文章是對php實(shí)現(xiàn)自動(dòng)獲取生成文章主題關(guān)鍵詞功能進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php實(shí)現(xiàn)爬取和分析知乎用戶數(shù)據(jù)
本文給大家介紹的是利用php的curl編寫的爬取知乎用戶數(shù)據(jù)的爬蟲,并分析用戶的各種屬性,有需要的小伙伴可以參考下2016-01-01PHP實(shí)現(xiàn)的漢字拼音轉(zhuǎn)換和公歷農(nóng)歷轉(zhuǎn)換類及使用示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的漢字拼音轉(zhuǎn)換和公歷農(nóng)歷轉(zhuǎn)換類及使用示例,精心整理自網(wǎng)上的資源,需要的朋友可以參考下2014-07-07Yii2隱藏frontend/web和backend/web的方法
這篇文章主要介紹了Yii2隱藏frontend/web和backend/web的方法,需要的朋友可以參考下2015-12-12解決Laravel 使用insert插入數(shù)據(jù),字段created_at為0000的問題
今天小編就為大家分享一篇解決Laravel 使用insert插入數(shù)據(jù),字段created_at為0000的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10遍歷指定目錄,并存儲目錄內(nèi)所有文件屬性信息的php代碼
本篇文章主要介紹了PHP遍歷指定目錄,并存儲目錄內(nèi)所有文件屬性信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10