php專案登陸功能

2021-08-07 10:39:45 字數 2012 閱讀 2068

登陸幾乎是每個系統必備的,在這裡和大家分享兩種常用的登陸功能的設計。

一、session登陸:

網頁登陸一般是將登陸資訊存放在 session 中,最簡單的登陸,當驗證使用者名稱密碼成功後,將使用者的id儲存在 session中。例如

session('login_user',$user['id']);

這時一般會有乙個is_login函式,功能很簡單,去驗證session('login_user')是否存在,如果存在就返回這個使用者id,使用者後面的業務,

例如:獲取當前登入使用者的個人資訊。

反之,如果不存在,則跳轉到登陸頁面。

$user = session('login_user');

if (empty($user)) else

這時候,對於需要控制登陸的頁面,比如個人中心,只需要在相關的控制器的業務**之前,加上is_login(),就可以判斷登陸了。

登出也比較簡單,情況這個session就好:

session('login_user',null);

但是這樣設計的登陸有個問題,就是在不同的電腦上,同乙個使用者名稱可以同時登陸。所以一般還會在使用者表中增加乙個表示此使用者

已經登陸的字段:例如status為1表示已

登陸,0表示未登入。每次在使用者登入的時候,都去驗證這個使用者的status,如果是0,則登

陸成功並且將status改為1,這時候如果改使用者名稱被再次登陸,則提示使用者此賬號已

登陸,不

能重複登陸。但是很多時候,我們還是

希望像qq一樣的登陸,在一台電腦上登陸,就踢掉其他電腦上已經登陸的該賬號,那就繼續看下面關於token的登陸。

二、token登陸:

且token不重複,例如:

$token = md5(sha1(time().rand(0,10)));

上面**就生成了乙個簡單的token(理論上不是完全沒可能重複,但是機率非常非常小)。這個token後台也需要儲存起來,對於一般

的**,可以儲存在資料庫中,如果訪問

臺驗證token的**如下:

public function islogin() 

$map['token'] = $token;

$map['deadline'] = array('egt',time());

$arr = m("token")->field("uid,token,deadline")->where($map)->find();

if(!$arr) else

}}

如上**:前端將token放在http請求的頭部,後台獲取token,如果沒獲取到就返回請登入。我們這裡是把token存在資料庫中的,獲

取token後,我們去驗證我們資料庫裡是否有這個token,且這個token沒過期。一般情況下,是多少分鐘內使用者不操作變自動退出登

錄。所以上面**中,如果token驗證成功,

我們就把token的過期時間延後20分鐘。

驗證成功後,返回使用者id給其他業務邏輯使用。

用token登陸就不會存在重複登陸的問題了,因

為每次使用者登陸成功就會生出新的token,且乙個token只針對乙個使用者,所以之前登

陸的使用者的token就失效了,需要重新

登陸。雖然可

以把token作為使用者表中的乙個字段,然後不少系統也是有單獨的token表來管理

token的,這樣會靈活許多,如果你想提示被踢掉的使用者,

您被提掉了,那邊token

作為乙個欄位是做不到的,我們只知道使用者那個

token不存在了。但是如果有個token表記錄歷史的token,那我們

就可以發現這個token是存在且沒過期的,然而卻不是這個賬

號最新

的,這時候就可以提示使用者,您被踢掉了。當然壞處就是需要儲存

token的歷史資料,需要額外儲存比較多的資料。

php實現註冊登陸功能

先來截圖下需要用到的檔案 這個是signup.html 1237 82627 寫好html繼續寫signup.php 1 2 header content type text html charset utf8 設定下utf 8編碼34 if isset post submit 78 usernam...

php實現登陸模組功能示例

最近在學習php。學了一點關於登陸的東西,寫下來備忘。新建四個頁面,分別命名為 login.php check.php index.php error.php login頁面用表單建立乙個登陸頁面,不多說了。在 裡用js指令碼判斷使用者名稱和密碼不能為空,為空則重置焦點。如下 check是檢查頁面,...

專案登陸功能的總體架設

登陸功能是專案中最基本的功能,說簡單也簡單,可是也不是那麼簡單,還是架構問題吧!登陸是乙個專案的入口,是基礎,我們應該怎麼架構這個問題,下面看看我的方法 1.毫無疑問,是我們的登陸的控制器 public function dologin manager model d manager info ar...