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

不言
發布: 2023-04-05 07:34:01
轉載
6230 人瀏覽過

這篇文章帶給大家的內容是關於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中文網其他相關文章!

相關標籤:
php
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!