登陸幾乎是每個系統必備的,在這裡和大家分享兩種常用的登陸功能的設計。
一、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...