今天,把学习tp6 过程中,遇到的一个让我爆粗口的坑,向大家说明一下
遇到了一个很隐晦的一个坑,就是session 不能跨控制器使用,官方文档也没有给出什么注释
咱们先来看看官方的使用方法
使用session需要引入session类可以直接使用think\facade\session,
这个我就不多说了,需要注意的,坑来了!!!坑来了!!!坑来了!!!
session
功能默认是没有开启的(API应用通常不需要使用session
),如果你需要使用Seesion
,需要在全局的中间件定义文件中加上下面的中间件定义:
'think\middleware\sessionInit'
如果是多应用模式,并且你只是用于部分应用,那么也可以在应用中间件定义文件中单独开启。
全局的中间件文件在app目录下middleware.php
里面有session的初始化,默认是注释的,取消注释即可,之后就可以使用session 了,一般开启
composer require topthink/think-multi-app
既然都准备好了,在调试时会不会使用下面这样的内容调试??尤其是登陆需要存储cookie时
echo json_encode();exit;
echo json_encode($arr);die();
下面才是我重点要说的,让我难受香菇的!
tp6在初始化了session或cookie 后,你如果在session或cookie后使用die 或exit,session或cookie 会消失!!!会消失!!!会消失!!!
解决办法
1、使用Cache替代
2、可以使用原生的$_session ,$_COOKIE替代
以上这篇thinkphp6.x 无法使用cookie和session 解决办法就是分享给大家的全部内容了,希望能给大家一个参考,这就是花费了我两天时间来调试,为什么cookie没有成功设置进去,让我万分暴躁,终于在刚才,找到了这个原因,希望大家在学习或开发tp6时,不在再踩坑,其他类似tp5,我暂不知道是否也存在这个问题,大家多多避坑