thinkphp5项目--企业单车网站(四)

thinkphp5项目--企业单车网站(四)

 

项目地址

fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Website
https://github.com/fry404006308/BicycleEnterpriseWebsite

 

一、可以直接获取session里面的值

要显示值的时候,比如登录的用户名,我们可以直接用session里面的值,而不一定要session->Controllor->database的方式获取值。

关于session用法,助手函数里面很全

 1 助手函数
 2 系统也提供了助手函数session完成相同的功能,例如:
 3 // 初始化session
 4 session([
 5 'prefix' => 'module',
 6 'type' => '',
 7 'auto_start' => true,
 8 ]);
 9 // 赋值(当前作用域)
10 session('name', 'thinkphp');
11 // 赋值think作用域
12 session('name', 'thinkphp', 'think');
13 // 判断(当前作用域)是否赋值
14 session('?name');
15 // 取值(当前作用域)
16 session('name');
17 // 取值think作用域
18 session('name', '', 'think');
19 // 删除(当前作用域)
20 session('name', null);
21 // 清除session(当前作用域)
22 session(null);
23 // 清除think作用域
24 session(null, 'think');

 

html页面读取session的方法

<h2><span class="profile"><span>{$Request.session.username}</span></span></h2>

 

在html页面传递session的值

<a href="{:url('admin/edit',array('id'=>$Request.session.id))}">修改密码</a>

因为外面已经有大括号了,所以可以直接去掉大括号

 

二、退出登录不能写在login控制器里面

退出登录不能写在login控制器里面,因为我们要先登录了才能退出登录,而login控制器的话是谁都可以访问的,因为是登录啊

所以可以把退出登录写在admin控制器里面

 

三、退出登录

1 //退出登录
2 public function logout(){
3     session(null);
4     //退出登录清空session之后要成功跳转
5     $this->success('退出系统成功','login/index');
6 }

 

四、cookie

助手函数好用

 1 // 初始化
 2 cookie(['prefix' => 'think_', 'expire' => 3600]);
 3 // 设置
 4 cookie('name', 'value', 3600);
 5 // 获取
 6 echo cookie('name');
 7 // 删除
 8 cookie('name', null);
 9 // 清除
10 cookie(null, 'think_');

 

五、模板输出

每个知识点的模板输出板块就好像是在视图中的使用方法一样

 

如果需要在模板中输出Session数据,可以使用下面的方法:
{$Request.session.user_name}
也可以支持二维数组的输出
{$Request.session.user.name}

 

六、光设置cookie还不行,还得在登录登出里面使用

设置cookie

 1 <?php
 2 namespace app\admin\controller;
 3 use think\Controller;
 4 
 5 
 6 
 7 class Login extends Controller
 8 {
 9     /**
10      * 登录
11      * 1、获取页面传递过来的用户名和保密
12      * 2、在数据库中查找此用户和密码
13      * 3、如果找到数据,那就登录,否则error提示
14      * @return [type] [description]
15      */
16     public function index()
17     {
18         //1、获取页面传递过来的用户名和保密
19         if(request()->isPost()){
20             $datain=input('post.');
21             // dump($data);die;
22             //2、在数据库中查找此用户和密码
23             $data=db('admin')->where('username',$datain['username'])->where('password',md5($datain['password']))->find();
24             //3、如果找到数据,那就登录,否则error提示
25             if($data){
26                 // dump($data);die;
27                 //4、将登录信息写入session
28                 session('id', $data['id']);
29                 session('username', $data['username']);
30                 session('password', $data['password']);
31                 //5、设置cookie
32                 cookie('id', $data['id'], 3600);
33                 cookie('username', $data['username'], 3600);
34                 cookie('password', $data['password'], 3600);
35                 $this->success('登录成功!!',url('index/index'));
36             }else{
37                 $this->error('用户名或者密码错误!!');
38             }
39         }
40         return view('login');
41     }
42 }

 

初始化方法中检查是否有cookie

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

 

退出登录中销毁cookie

1     //退出登录
2     public function logout(){
3         session(null);
4         cookie('user', null);
5         cookie('username', null);
6         cookie('password', null);
7         //退出登录清空session之后要成功跳转
8         $this->success('退出系统成功','login/index');
9     }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值