• m_Orchestrate learning system---三、session使用完整流程是什么


    m_Orchestrate learning system---三、session使用完整流程是什么

    一、总结

    一句话总结:

    1、在登录成功之后设置session和cookie

    2、在公共控制器里面使用session和cookie判断是否已经登录(做基本的权限控制)

    3、在视图页面调用session来显示登录

    4、退出登录之后,把cookie和session都清空

    1、thinkphp中session和cookie的使用的完整流程是怎样?

    1、在登录成功之后设置session和cookie

     1 <?php
     2 namespace appindexcontroller;
     3 use thinkLoader;
     4 use thinkValidate;
     5 
     6 use appindexcontrollerBase;
     7 
     8 class Login extends Base
     9 {
    10     //登录
    11     public function login()
    12     {
    13         if(request()->isPost()){
    14             //1、获取用户从页面上传过来的账号和密码
    15             $data=input('post.');
    16             // dump($data);die;
    17             //2、对获取的数据进行验证
    18             $captcha = new 	hinkcaptchaCaptcha();
    19             if (!$captcha->check($data['code'])) {
    20                 $this->error('验证码错误');
    21             }
    22             $validate = Loader::validate('Login');
    23             if(!$validate->scene('login')->check($data)){
    24                 $this->error($validate->getError()); die;
    25             }
    26             
    27             //3、在数据库中查找此用户和密码,找到则登录成功,没找到则登录失败
    28             $res=db('user')->where('username',$data['username'])->where('password',md5($data['password']))->where('status',$data['status'])->find();
    29             //4、如果在数据库中查找到数据,则判断是老师还是学生,跳转到相应的页面去,没有就直接返回错误界面
    30             if($res){
    31                 //5、登录成功,将数据存入cookie和session
    32                 //5.1、将登录信息写入session
    33                 session('id', $res['id']);
    34                 session('username', $res['username']);
    35                 session('password', $res['password']);
    36                 //5.2、设置cookie
    37                 cookie('id', $res['id'], 3600);
    38                 cookie('username', $res['username'], 3600);
    39                 cookie('password', $res['password'], 3600);
    40                 if($data['status']) $this->success("即将跳转到老师界面!!",url('teacher/index/index'));
    41                 else $this->success("即将跳转到学生界面!!",url('student/index/index'));
    42             }else{
    43                 $this->error('用户名或者密码错误或者未注册!!');
    44             }
    45 
    46         }
    47 
    48         return view();
    49     }
    50 
    51 }

    2、在公共控制器里面使用session和cookie判断是否已经登录(做基本的权限控制)

     1 <?php
     2 namespace app	eachercontroller;
     3 
     4 use thinkController;
     5 
     6 class Base extends Controller
     7 {
     8     /**
     9      * 登录之后显示正确登录的用户
    10      * 0、将登录的用户信息写入session
    11      * 1、获取登录的用户的数据
    12      * 2、将获取的数据传递到top.htm页面
    13      * @return [type] [description]
    14      */
    15     public function _initialize()
    16     {
    17         if(!session('username')){
    18             //如果cookie存在的话
    19             if(cookie('username')){
    20                 //设置session
    21                 session('id', cookie('id'));
    22                 session('username',cookie('username'));
    23                 session('password', cookie('password'));
    24                 // dump(cookie('username'));die;
    25                 return;
    26             }
    27             $this->error('您尚未登录系统',url('index/login/login'));
    28         }
    29     }
    30 }

    3、在视图页面调用session来显示登录

    <span class="tpl-header-list-user-nick">{$Request.session.username}</span>
    <span class="tpl-header-list-user-ico"> <img src="__TEACHER__/assets/img/user01.png"></span>

     4、退出登录之后,把cookie和session都清空

     1 <?php
     2 namespace app	eachercontroller;
     3 
     4 use thinkController;
     5 
     6 class Base extends Controller
     7 {
     8     //退出登录操作
     9     public function logout(){
    10         session(null);
    11         cookie('id', null);
    12         cookie('username', null);
    13         cookie('password', null);
    14         //退出登录清空session之后要成功跳转
    15         $this->success('退出系统成功',url('index/index/index'));
    16     }
    17 }

    二、内容在总结中

     

    项目地址

    fry404006308/m_Orchestrate: m_Orchestrate
    https://github.com/fry404006308/m_Orchestrate

  • 相关阅读:
    不透明度
    浮动塌陷
    滑动门技术
    文本替换
    清除浮动
    浮动
    定位概述
    IE6中使用通用选择器模拟子选择器效果
    js对象
    bzoj:2049: [Sdoi2008]Cave 洞穴勘测
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8892123.html
Copyright © 2020-2023  润新知