• 技术文章 > 后端开发 > php教程

    php实现用户登录与注销的代码示例

    不言 不言 2019-02-12 14:22:22 转载 667

    本篇文章给大家带来的内容是关于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{	//登录
        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('登录成功',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() {
            // 判定用户是否登录
            $isLogin = $this->isLogin();
            if(!$isLogin) {
                return $this->redirect(url('login/index'));
            }
        }
    
        //判定是否登录
        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
    上一篇:php中uksort() 函数的用法介绍 下一篇:PHP如何删除基于键的数组元素

    相关文章推荐

    • PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)_php技巧 • PHP实现查询两个数组中不同元素的方法_php技巧 • PHP实现的构造sql语句类实例_php技巧 • PHP实现长文章分页实例代码(附源码)_php实例 • PHP实现的oracle分页函数实例_php技巧

    全部评论我要评论

  • 取消 发布评论 发送
  • PHP中文网