Maison >développement back-end >tutoriel php >Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs

Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs

不言
不言avant
2019-02-12 14:22:226435parcourir

Le contenu de cet article concerne l'exemple de code php pour implémenter la connexion et la déconnexion des utilisateurs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Bien que j'aie déjà écrit sur la fonction de connexion, je n'ai pas examiné sérieusement la fonction de déconnexion. Il est enregistré par la présente

Lorsque vous cliquez pour vous connecter, les informations du compte utilisateur sont stockées dans le périmètre défini (session) sous forme de variables. Session représente une session tant que vous ne fermez pas le navigateur actuel, sa valeur existera. La valeur par défaut est d'environ 20 minutes.

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

Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs

Connexion

// S'il s'agit d'une demande de publication, c'est-à-dire les données du la page de connexion est jugée Le nom d'utilisateur et le mot de passe sont-ils corrects ?
Le mot de passe du compte est concaténé avec des numéros générés aléatoirement et crypté à l'aide de MD5

// S'il ne s'agit pas d'une publication, déterminez s'il y a des informations de connexion dans le session
Oui Aller à la page après la connexion
Non Aller à la page de connexion

class Login extends Controller{	//Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs
    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('Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs成功',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'));
    }}

La page après la connexion
Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs

Base

Juger que la session est en cours S'il y a un BisAccount
Oui, indiquer le statut de connexion
Sinon, rediriger vers la page de connexion

class Base extends  Controller{
    public $account;
    public function _initialize() {
        // 判定用户是否Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs
        $isLogin = $this->isLogin();
        if(!$isLogin) {
            return $this->redirect(url('login/index'));
        }
    }

    //判定是否Exemple de code PHP pour implémenter la connexion et la déconnexion des utilisateurs
    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

Page d'accueil héritée de la base. Si le compte est déconnecté et que vous accédez à nouveau à index/index, la méthode d'initialisation _initialize dans Base sera utilisée pour déterminer s'il existe un BisAccount dans la portée bis et accéder à la page de connexion sans accéder à la page après la connexion.
Après vous être connecté, visitez index/index et login/index pour revenir à la même page.

class Index extends Base{
    public function index()
    {
        return $this->fetch('');
    }
    }
astuce : Si le nom de la session enregistrée est A, vous devez également utiliser A lors de la récupération de la session

//存
session(‘BisAccount’, $ret, ‘bis’);
//取
session(‘BisAccount’, ‘’, ‘bis’);
Les deux sont BisAccount

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer