thinkphp5项目--企业单车网站(四)
2024-08-30 18:07:49
thinkphp5项目--企业单车网站(四)
项目地址
fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Website
https://github.com/fry404006308/BicycleEnterpriseWebsite
一、可以直接获取session里面的值
要显示值的时候,比如登录的用户名,我们可以直接用session里面的值,而不一定要session->Controllor->database的方式获取值。
关于session用法,助手函数里面很全
助手函数
系统也提供了助手函数session完成相同的功能,例如:
// 初始化session
session([
'prefix' => 'module',
'type' => '',
'auto_start' => true,
]);
// 赋值(当前作用域)
session('name', 'thinkphp');
// 赋值think作用域
session('name', 'thinkphp', 'think');
// 判断(当前作用域)是否赋值
session('?name');
// 取值(当前作用域)
session('name');
// 取值think作用域
session('name', '', 'think');
// 删除(当前作用域)
session('name', null);
// 清除session(当前作用域)
session(null);
// 清除think作用域
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控制器里面
三、退出登录
//退出登录
public function logout(){
session(null);
//退出登录清空session之后要成功跳转
$this->success('退出系统成功','login/index');
}
四、cookie
助手函数好用
// 初始化
cookie(['prefix' => 'think_', 'expire' => 3600]);
// 设置
cookie('name', 'value', 3600);
// 获取
echo cookie('name');
// 删除
cookie('name', null);
// 清除
cookie(null, 'think_');
五、模板输出
每个知识点的模板输出板块就好像是在视图中的使用方法一样
如果需要在模板中输出Session数据,可以使用下面的方法:
{$Request.session.user_name}
也可以支持二维数组的输出
{$Request.session.user.name}
六、光设置cookie还不行,还得在登录登出里面使用
设置cookie
<?php
namespace app\admin\controller;
use think\Controller; class Login extends Controller
{
/**
* 登录
* 1、获取页面传递过来的用户名和保密
* 2、在数据库中查找此用户和密码
* 3、如果找到数据,那就登录,否则error提示
* @return [type] [description]
*/
public function index()
{
//1、获取页面传递过来的用户名和保密
if(request()->isPost()){
$datain=input('post.');
// dump($data);die;
//2、在数据库中查找此用户和密码
$data=db('admin')->where('username',$datain['username'])->where('password',md5($datain['password']))->find();
//3、如果找到数据,那就登录,否则error提示
if($data){
// dump($data);die;
//4、将登录信息写入session
session('id', $data['id']);
session('username', $data['username']);
session('password', $data['password']);
//5、设置cookie
cookie('id', $data['id'], 3600);
cookie('username', $data['username'], 3600);
cookie('password', $data['password'], 3600);
$this->success('登录成功!!',url('index/index'));
}else{
$this->error('用户名或者密码错误!!');
}
}
return view('login');
}
}
初始化方法中检查是否有cookie
/**
* 登录之后显示正确登录的用户
* 0、将登录的用户信息写入session
* 1、获取登录的用户的数据
* 2、将获取的数据传递到left.htm页面
* @return [type] [description]
*/
public function _initialize()
{
if(!session('username')){
//如果cookie存在的话
if(cookie('username')){
//设置session
session('id', cookie('id'));
session('username',cookie('username'));
session('password', cookie('password'));
// dump(cookie('username'));die;
return;
}
$this->error('您尚未登录系统','login/index');
}
}
退出登录中销毁cookie
//退出登录
public function logout(){
session(null);
cookie('user', null);
cookie('username', null);
cookie('password', null);
//退出登录清空session之后要成功跳转
$this->success('退出系统成功','login/index');
}
最新文章
- C# Out,Ref 学习总结
- inout用法浅析
- [操作系统] OS X Yosemite U盘制作
- Qt入门学习——Qt 5 帮助文档的使用
- android 代码动态创建视图
- Cisco Packet Tracer做单臂路由的过程
- 基于PlatinumKit库的DLNA服务端开发
- cocos creator 碰撞检测
- 2018—自学Selenium+Python 笔记(一)
- nginx-1.12.1编译参数详情
- bzoj3261: 最大异或和 可持久化trie
- MultipartFile(文件的上传)
- dfs——n的全排列(回溯)
- 第75讲:模式匹配下的For循环
- Delphi TStringHelper用法详解
- [NOI 2016]循环之美
- Codeforces 463D Gargari and Permutations(求k个序列的LCS)
- tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException
- 如何获取UITableView中cell的frame值
- 李洪强iOS开发之iOS好文章收集