這篇文章帶給大家的內容是關於php實現使用者登入與登出的程式碼範例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
之前雖然寫過登入的功能,但是登出還沒有認真的看過。特此記錄
當點選登入時,把使用者帳號資訊以變數的形式存在定義的作用域(session)。 session代表會話,只要你不關閉目前瀏覽器他的值就會存在,預設20分鐘左右。
// BisAccount变量名, $ret用户账号信息 ,赋值bis作用域 session(‘BisAccount’, $ret, ‘bis’); // 删除 bis作用域 session( null,‘bis’); //取值 在bis作用域,名为BisAccount的值 session(‘BisAccount’, ‘’, ‘bis’);
Login
#// 如果是post請求,也就是從登入頁面過來的資料 則判斷使用者名稱和密碼是否正確
帳號密碼與隨機產生的數字拼接,使用MD5加密
// 如果不是post,判斷session中是否有登入資訊
有 跳到登入後的頁面
沒有 跳到登入頁面
class Login extends Controller{ //php實作使用者登入與登出的程式碼範例 public function index() { if (request()->isPost()) { $data = input('post.'); $ret = model('BisAccount')->get(['username'=>$data['username']]); if(empty($ret) || $ret->status != 1){ $this->error('该用户不存在或者未审核通过'); } $pass = $data['password']; $ran = $ret['code']; if(md5($pass."".$ran) != $ret['password']){ $this->error('密码错误'); } model('BisAccount')->updateById(['last_login_time'=>time()],$ret->id); //session保存用户信息 赋值bis作用域 session('BisAccount', $ret, 'bis'); return $this->success('php實作使用者登入與登出的程式碼範例成功',url('Index/index')); } else { $account = session('BisAccount','','bis'); if(!empty($account) && $account->id){ return $this->redirect(url('index/index')); } return $this->fetch(); } } //注销 public function logout(){ session( null,'bis'); $this->redirect(url('login/index')); }}
登入後的頁面
Base
判斷session中是否有BisAccount
有,表示登入狀態
沒有,重新導向到登入頁面
class Base extends Controller{ public $account; public function _initialize() { // 判定用户是否php實作使用者登入與登出的程式碼範例 $isLogin = $this->isLogin(); if(!$isLogin) { return $this->redirect(url('login/index')); } } //判定是否php實作使用者登入與登出的程式碼範例 public function isLogin() { // 获取sesssion $user = $this->getLoginUser(); if($user && $user->id) { return true; } return false; } public function getLoginUser() { if(!$this->account) { $this->account = session('BisAccount', '', 'bis'); } return $this->account; }}
Index
首頁 繼承自 Base 。若帳號登出後,再造訪index/index,則會走Base中_initialize初始化方法,
判斷bis作用域中是否有BisAccount從而跳到登入頁面,而不會造訪到登入後的頁面。
登入後,造訪index/index 與 login/index 回傳相同的頁面。
class Index extends Base{ public function index() { return $this->fetch(''); } }
tip: 若存入的Session名稱為A,取Session時也要取A
//存 session(‘BisAccount’, $ret, ‘bis’); //取 session(‘BisAccount’, ‘’, ‘bis’);
都是BisAccount
以上是php實作使用者登入與登出的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!