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');
}

thinkphp5项目--企业单车网站(四)的更多相关文章

  1. thinkphp5项目--企业单车网站(五)

    thinkphp5项目--企业单车网站(五) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  2. thinkphp5项目--企业单车网站(三)

    thinkphp5项目--企业单车网站(三) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  3. thinkphp5项目--企业单车网站(一)

    thinkphp5项目--企业单车网站(一) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  4. thinkphp5项目--企业单车网站(二)

    thinkphp5项目--企业单车网站(二) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  5. thinkphp5项目--企业单车网站(七)

    thinkphp5项目--企业单车网站(七) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  6. thinkphp5项目--企业单车网站(六)

    thinkphp5项目--企业单车网站(六) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  7. thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)

    thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise ...

  8. thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了)

    thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicyc ...

  9. thinkphp5项目--练手--企业单车网站(九)(友情链接)

    thinkphp5项目--练手--企业单车网站(九)(友情链接) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Webs ...

随机推荐

  1. npm install报错类似于npm WARN tar ENOENT: no such file or directory, open '***\node_modules\.staging\***

    报错类似于如下图 解决方法: 删除文件 package-lock.json,再重新执行npm i或者npm install

  2. BZOJ 3790 神奇项链(manacher+贪心)

    3790: 神奇项链 Time Limit: 10 Sec  Memory Limit: 64 MB Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小 ...

  3. redis做成windows服务

    打开cmd切换到redis根目录 执行安装命令  redis-server.exe --service-install redis.windows.conf --loglevel verbose 卸载 ...

  4. mariadb 视图 事务 索引 外键

    视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦   假如因为某种需求,需要将user拆房表usera和表userb,该两张表 ...

  5. MAVEN flex

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. Qt之表单布局(QFormLayout)

    简述 QFormLayout管理输入型控件和关联的标签组成的那些Form表单. QFormLayout是一个方便的布局类,其中的控件以两列的形式被布局在表单中.左列包括标签,右列包含输入控件,例如:Q ...

  7. 【Android】资源系列(二) -- 文件原样保留的资源assets和res/raw文件夹

    这两个文件夹都能够存放文件.而在打包的时候被原样保留. 那用这两个文件夹可以做什么事呢? 1.放一个apk,要用的时候调出来.免得去下载server下载. 2.放一个sql,当app数据库非常大的时候 ...

  8. 每一个程序猿都应该用MBP

    换笔记本的想法非常久了.前段时间换工作就想看换工作之后是什么情况吧. 可能工作配的笔记本就是MBP.后来发现是想多了,新工作的笔记本是Thinkpad X240. 配置全然够用了,8G内存+128G的 ...

  9. C++学习第一天--编译命令

    前一个月的时间主要是在捯饬自己的ubuntu vim环境,昨天终于都搞好了,从今天开始,学习C++.至于为什么学习C++,其实很大一部分原因还是因为自己喜欢vim,又听说vim对C++的支持还不错,所 ...

  10. 10.Intellij IDEA svn的使用详解

    转自:https://www.2cto.com/kf/201703/614858.html 首先提一句,IDEA对各种的版本控制工具的支持是非常好的,打开系统设置界面,就可以看到他有专门的一栏 Ver ...