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
m_Orchestrate learning system---三、session使用完整流程是什么的更多相关文章
- m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么
m_Orchestrate learning system---十三.thinkphp的验证器支持多语言么 一.总结 一句话总结:支持,不仅验证器支持,其它的插件应该都支持 不仅thinkphp支持多 ...
- m_Orchestrate learning system---mo系统权限思考
m_Orchestrate learning system---mo系统权限思考 一.总结 一句话总结:注意不同身份访问同一客户端时候的权限,比如面板显示,比如功能按钮 权限 面板 功能 1.小组之间 ...
- m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置
m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...
- m_Orchestrate learning system---十一、thinkphp查看临时文件的好处是什么
m_Orchestrate learning system---十一.thinkphp查看临时文件的好处是什么 一.总结 一句话总结:可以知道thinkphp的标签被smarty引擎翻译而来的php代 ...
- m_Orchestrate learning system---二十四、thinkphp里面的ajax如何使用
m_Orchestrate learning system---二十四.thinkphp里面的ajax如何使用 一.总结 一句话总结:其实ajax非常简单:前台要做的事情就是发送ajax请求过来,后台 ...
- 深入理解java:4.3.1. 框架编程之MyBatis---SQL语句执行的完整流程
Mybatis的整个的执行流程.如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory, SqlSessionFactory在根据配置,配置来源于两个 ...
- Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)
In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...
- Deep learning:三十八(Stacked CNN简单介绍)
http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
随机推荐
- nyoj--1185--最大最小值(线段树)
最大最小值 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数 ...
- ChildViewController
View Controller中可以添加多个sub view,在需要的时候显示出来: 可以通过viewController(parent)中可以添加多个child viewController;来控制 ...
- C#调用mmpeg进行各种视频转换的类实例
本文实例讲述了C#调用mmpeg进行各种视频转换的类.分享给大家供大家参考.具体如下: 这个C#类封装了视频转换所需的各种方法,基本上是围绕着如何通过mmpeg工具来进行视频转换 using Syst ...
- Ubuntu下安装tim/QQ/微信
一.安装deepin-wine环境: 上https://github.com/wszqkzqk/deepin-wine-ubuntu页面下载zip包(或用git方式克隆),在“下载”目录下原地解压即可 ...
- poj 2828 Buy Tickets【线段树 单点更新】
倒着插,先不理解意思,后来看一篇题解说模拟一下 手动模拟一下就好理解了----- 不过话说一直写挫---一直改啊----- 好心塞------ #include <cstdio> #inc ...
- CDR 2017压感笔和压感设备该怎么设置使用?
您可以通过CorelDRAW 2017 中的以下工具来运用压感笔.笔或其他设备的压力:艺术笔(表达模式).橡皮擦.涂抹.转动.吸引.排斥.粗糙和弄脏.此外,您还可以通过艺术笔(表达模式)工具.橡皮擦. ...
- 脚本_统计每个远程IP访问本机apache的次数
#!bin/bash#功能:统计每个远程IP访问本机apache的次数#作者:liusingbonawk '{ip[$1]++} END{for(i in ip){print ip[i],i}}' ...
- rem 自适应布局 bootstrap 移动端适配
移动端适配用:rem 自使用布局用:bootstrap
- what is udev?
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...
- BZOJ 1856 [SCOI2010]生成字符串 (组合数)
题目大意:给你n个1和m个0,你要用这些数字组成一个长度为n+m的串,对于任意一个位置k,要保证前k个数字中1的数量大于等于0的数量,求所有合法的串的数量 答案转化为所有方案数-不合法方案数 所有方案 ...