thinkphp6中使用session设置无效问题的解决及注意事项

这篇具有很好参考价值的文章主要介绍了thinkphp6中使用session设置无效问题的解决及注意事项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

就如thinkphp官方在文档开头所描述的一样,ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化;其实从5.x版本开始thinkphp本身就是为api应用而生。特别是在6.0版本开始框架默认压根不开启和提供模板引擎,需要下载安装模板引擎类库后方可开启。

新版本不支持操作原生$_SESSION数组和所有session_开头的函数,只能通过Session类(或者助手函数)来操作。因此,Session功能默认是没有开启的(API应用通常不需要使用Session)。甚至我们可以这样理解:在6.0版本中框架本身不提供session机制,而是通过think\facade\Session类来模拟实现session。

根据官方文档,默认session是不开启的,需要在全局的中间件中中开启;让人如果是多应用项目,仅仅想让session应用到某个应用,可以在对应的应用的中间件中开启。其中全局中间件配置文件位于app/middleware.phpthinkphp6中使用session设置无效问题的解决及注意事项

实际上仅仅在中间件中进行session初始化是不行的,如写入测试代码:

session('key',1);
var_dump(session('key'));

这个时候页面会int(1),但刷新页面后重新使用session(‘key’)获取数据会发现NULL,也就是获取不到数据值。原因在于在上述处理后session的缓存数据并没有保存起来(类似你填写一个表单,没点提交,自然刷新后就没有了)。需要在执行设置session后,执行如下代码进行保存:

实际上仅仅在中间件中进行session初始化是不行的,如写入测试代码:

session('key',1);
\think\facade\Session::save();//这个不写也一样可以用,主要是要在中间件里开启

这样操作后,我们会发现在框架的runtime目录中,会出现一个对应的session缓存文件。

里面就包含了当前会话保存的两个session值,一个是上面演示的key,一个是另外写入的vcode。

现在在系统任何位置,执行session(‘key’)都能得到预期的数据。

相对于5.x版本,6.x版本的代码更加精简,剥离了很多功能模块,如果要使用这些功能模块,需要加载额外的类库或者自己接管相应的流程进行处理。所以,笔者不建议把已经稳定运行的项目升级为了thinkphp6.0版本,官方没有提供自动化升级方案,因为差别的东西还是比较多,仅仅提供了升级指导,很多流程需要手动去进行升级。网络服务部codeit.org.cn今年开始才在新项目使用6.0版本,后续如果有时间笔者会整理该项目升级到6.0版本过程中遇到的一些典型问题及其解决方法。文章来源地址https://www.toymoban.com/news/detail-454834.html

到了这里,关于thinkphp6中使用session设置无效问题的解决及注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Thinkphp6使用RabbitMQ消息队列

    Thinkphp6使用RabbitMQ消息队列

    Thinkphp6连接使用RabbitMQ(不止tp6,其他框架对应改下也一样),使用Docker部署RabbitMQ,在上一篇已经讲了-传送门-。 开始前先进入RabbitMQ的web管理界面,选择Queues菜单,点击底部的Add a new queue,新建一个test的队列。 安装thinkphp6框架 安装workerman扩展 安装rabbitmq扩展 生产者 在a

    2023年04月23日
    浏览(24)
  • ThinkPHP6.0+ 使用Redis 原始用法

    ThinkPHP6.0+ 使用Redis 原始用法

    composer 安装 predis/predis 依赖,或者安装php_redis.dll的扩展。 我这里选择的是predis/predis 依赖。 进入config/cache.php 配置添加redis缓存支持 示例: 页面测试代码 效果 redis 高级用法 在php 原生中redis 的使用是 thinkephp 中要使用php redis 的扩展方法。则需使用 handler() ; 代码示例 根据菜

    2024年02月12日
    浏览(6)
  • Element UI 使用 table 组件设置 el-table-column 宽度width为百分比无效的问题解决方案

    使用 Element el-table 组件时,给列 el-table-column 设置百分比 % 宽度无效( width=\\\"30%\\\" ) Vue中要将 el-table-column 的宽度设置成百分比的话,不能通过设置 width 来实现,而是要设置 min-width ,并且每一列都必须设置 min-width 。 el-table 组件会被 vue 解析成 html ,Vue直接把百分号去掉把数值当

    2023年04月08日
    浏览(61)
  • 【ThinkPHP6系列学习-1】下载并部署ThinkPHP6

    【ThinkPHP6系列学习-1】下载并部署ThinkPHP6

    在指定目录(www目录)下打开cmd,使用composer下载thinkphp6,命令后面的thinkphp6就是下载的目录名,可以随意修改。 下载后,查看目录结构,tp6的目录结构和tp5不同,默认是单应用(只有一个模块),如果需要多应用,需要开启多应用模式,后面文章再讲。 主要用到的目录有

    2024年02月05日
    浏览(10)
  • thinkphp6 入门教程合集(更新中) thinkphp6 入门(1)--安装、路由规则、多应用模式

    thinkphp6 入门(1)--安装、路由规则、多应用模式_软件工程小施同学的博客-CSDN博客 thinkphp6 入门(2)--视图、渲染html页面、赋值_软件工程小施同学的博客-CSDN博客 thinkphp6 入门(3)--获取GET、POST请求的参数值_thinkphp获取get传值_软件工程小施同学的博客-CSDN博客 thinkphp6 入门(

    2024年02月09日
    浏览(24)
  • thinkphp6和thinkphp5有什么区别

    Thinkphp6.0完全开发手册 采用PHP7强类型(严格模式) tp5 环境要求PHP = 5.4.0 ThinkPHP6.0的环境要求 PHP = 7.2.5 6.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。 支持更多的PSR规范 V6.0.10版本开始 支持 psr7 response 多应用支持 tp5默认使用多应用模式部署 tp6 安

    2024年02月06日
    浏览(3)
  • ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘think\facade\Filesystem‘ not found 错误的解决方案

    ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘think\facade\Filesystem‘ not found 错误的解决方案

    ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘thinkfacadeFilesystem’ not found 错误,真够郁闷的。 那么,需要把之前的代码做点改动,之前的代码如下: 接口返回: 接下来将上传部分做个更改,来适配无Filesystem扩展的状态 api接口返回 OK,完美解决! 另一种更简单的处理方式:

    2024年02月14日
    浏览(9)
  • thinkPHP6接入workman

    thinkPHP6接入workman

    上篇介绍了workman实现websocket功能(链接:https://blog.csdn.net/weixin_38155824/article/details/128952037) 后传:解决workman部署到Linux环境无法启动和连接的问题(https://blog.csdn.net/weixin_38155824/article/details/129004050) 这篇就介绍如何在thinkPHP6项目中接入workman。 查看TP6手册:命令行=自定义命

    2024年02月15日
    浏览(14)
  • Thinkphp6 如何 生成二维码

    来自:https://www.is5.me/notes/php/633.html

    2024年02月11日
    浏览(5)
  • ThinkPHP6.0 链式SQL语句

    查询单个数据 查询结果集(查询结果返回多条数据的意思) ​ 查询一个字段 ​ 查询一列 添加数据 修改数据 删除数据 根据主键删除 ​ 条件删除 ​ 查询数据 格式 where(\\\'字段名\\\',\\\'查询表达式\\\',\\\'查询条件\\\'); 模糊查询 区间查询 IN查询 Not Null Null 链式操作示例 field操作(输出选择

    2024年02月11日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包