日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法

發(fā)布時(shí)間:2023/12/1 php 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有時(shí)候你的網(wǎng)站賬號(hào)被盜或你在別處登錄操作后臺(tái)時(shí),右下角會(huì)彈出提示信息,提醒你的賬號(hào)異地登錄,或者會(huì)被強(qiáng)制下線。對(duì)于這種安全性要求比較高的web網(wǎng)站,很多后臺(tái)管理都會(huì)做這種功能提醒。

甄別自己的賬號(hào)是否被盜或者是否有另一個(gè)人此刻登陸了在進(jìn)行后臺(tái)操作,這些都是很不安全的,為了避免兩個(gè)人同時(shí)登錄同時(shí)操作,可強(qiáng)制下線一個(gè)賬號(hào)。我們今天就來(lái)講解這個(gè)知識(shí)點(diǎn)。

當(dāng)然,通過IP判斷是不行的,因?yàn)镮P是隨時(shí)會(huì)在某一個(gè)網(wǎng)段內(nèi)變化的,不過有一個(gè)機(jī)制,那就是session,恰巧可以解決這個(gè),只要你使用同一個(gè)瀏覽器訪問網(wǎng)站,瀏覽器不關(guān)閉每個(gè)來(lái)訪者的session_id是不變的,這也正是解決這個(gè)問題需要的。

以TP5.0框架搭建的網(wǎng)站后臺(tái)為例;用哪各框架都一樣

(1)修改數(shù)據(jù)庫(kù)用戶表

在user表中,增加一個(gè)字段`session_id` varchar(32),用來(lái)存放登錄之后的session_id。

(2)用戶登錄

用戶登錄,就是正常的判斷賬號(hào)密碼以及驗(yàn)證碼,當(dāng)這些都驗(yàn)證通過的時(shí)候,取出當(dāng)前的session_id存入數(shù)據(jù)庫(kù)user表中。

(3)解決異地登錄問題 對(duì)于后臺(tái)操作,為了便于驗(yàn)證和操作安全,基本都會(huì)先創(chuàng)建一個(gè)公共控制器Common去繼承控制器基類,然后后臺(tái)的其他操作控制器都繼承這個(gè)公共控制器。對(duì)于后臺(tái)的每一步操作之前,用戶狀態(tài)的檢測(cè)都放在Common控制器的__construct構(gòu)造方法中。

現(xiàn)在在__construct構(gòu)造方法中,除了驗(yàn)證用戶登錄狀態(tài)是否被鎖定等等,還要取出本地session_id和存放在admin表中的session_id進(jìn)行比對(duì),如果對(duì)不上那么表名賬號(hào)在異地有登陸,這時(shí)候可以迫使強(qiáng)制下線,退回到登錄頁(yè)面。代碼如下:

$user=Db::name('admin')->where('id',session('admin_id'))->find(); $session_id = session_id(); if($user['session_id'] != $session_id){session_destroy();$this->error('登錄異常,被迫下線', 'Login/index'); }

效果如下:

Login.php核心代碼,isGet就顯示登錄頁(yè)面,不是就進(jìn)行登錄處理操作。

class Login extends Common {public $is_check_login = false;public function index(){if($this->request->isGet()){return $this->fetch();}//調(diào)用自定義的方法實(shí)現(xiàn)登錄$model = model('Admin');$result = $model->login();if($result === false){$this->error($model->getError());}} }

Admin.php,主要是處理上面login的邏輯與處理方法。校驗(yàn)等,不返回false就存入session_id

Common.php公共控制器文件,login繼承公共方法,也就是中間件。意味著登錄之前優(yōu)先通過公共方法,此處接收session_id與存在表里的session_id是否一致,不一致就提醒異地登錄,強(qiáng)制下線!

public $is_check_login=true; public $request; public function __contruct(Request $req) {parent::__contruct();$this->request =$req;if(!session('admin_id') && $this->is_check_login){$this->error("先去登錄",'Login/index');}if(session('admin_id') && $this->is_check_login){$user = "select...." //查找存在表里的session_id,然后作比較if(session('admin_id') != $user['session_id']){session_destroy();$this->error("登錄異常,被迫下線");}} }

整個(gè)過程思路實(shí)現(xiàn)起來(lái)很簡(jiǎn)單!其實(shí)就是在講sesson_id的一個(gè)用法!

以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會(huì)遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對(duì)此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要

PHP進(jìn)階架構(gòu)師>>>視頻、面試文檔免費(fèi)獲取?docs.qq.com

或 者關(guān)注咱們下面的知乎專欄

PHP架構(gòu)師圈子?zhuanlan.zhihu.com

總結(jié)

以上是生活随笔為你收集整理的php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。