微信扫一扫打赏支持

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 app\index\controller;
 3 use think\Loader;
 4 use think\Validate;
 5 
 6 use app\index\controller\Base;
 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 \think\captcha\Captcha();
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\teacher\controller;
 3 
 4 use think\Controller;
 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\teacher\controller;
 3 
 4 use think\Controller;
 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

 

posted @ 2018-09-20 00:45  范仁义  阅读(425)  评论(0编辑  收藏  举报