首頁  >  文章  >  後端開發  >  php實作使用者登入與登出的程式碼範例

php實作使用者登入與登出的程式碼範例

不言
不言轉載
2019-02-12 14:22:226312瀏覽

這篇文章帶給大家的內容是關於php實現使用者登入與登出的程式碼範例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

之前雖然寫過登入的功能,但是登出還沒有認真的看過。特此記錄

當點選登入時,把使用者帳號資訊以變數的形式存在定義的作用域(session)。 session代表會話,只要你不關閉目前瀏覽器他的值就會存在,預設20分鐘左右。

// BisAccount变量名, $ret用户账号信息 ,赋值bis作用域
session(‘BisAccount’, $ret, ‘bis’);
// 删除 bis作用域
session( null,‘bis’);
//取值 在bis作用域,名为BisAccount的值
session(‘BisAccount’, ‘’, ‘bis’);

php實作使用者登入與登出的程式碼範例

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'));
    }}

登入後的頁面
php實作使用者登入與登出的程式碼範例

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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除