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 appadmincontroller; 3 use thinkController; 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 }