ThinkPHP6.0:Session和Cookie机制的变化
发布时间 - 2019-12-16 00:00:00 点击率:次
最新的6.0版本对框架的Session和Cookie机制进行了重新设计,摆脱了原有设计的束缚。
Session
新的Session机制不依赖PHP内置的Session会话机制,完全独立实现,优势在于可以兼容任何的运行环境,而且配置参数也大为简化。
新版你不能再使用$_SESSION或者任何php内置的session函数操作Session,必须通过think\Session类或者think\facade\Session静态代理类操作Session数据。
Session对于很多API接口应用来说,不是必须的,而随着前后端分离的应用架构设计越来越多,因此6.0的Session默认是关闭的,系统把Session相关的功能设计成一个独立的中间件,如果你需要使用Session可以单独在应用的中间件定义文件中开启。
默认安装后,在app目录下的middleware.php中间件定义文件中,对可能需要使用的系统中间件预置了注释,你可以直接取消注释,加上:
// Session初始化 'think\\middleware\\SessionInit',
该中间件的作用主要是初始化SessionId,并注入当前的请求对象。初始化的时候会自动读取config目录下的session.php配置。
默认使用文件的方式保存Session数据,支持使用redis、memcache以及memcached。
内置的Session驱动默认配置下,都是支持跨应用读取Session数据的。如果你需要区分不同的应用,保持各个应用的Session数据独立,可以在应用的session配置文件中设置prefix参数,例如:
'prefix' => 'admin',
并且为了防止Session数据过多,文件方式写入Session数据的时候支持垃圾回收机制。可以配置gc_divisor和gc_maxlifetime两个参数来设置GC回收。
Session数据会在当前请求结束后,自动写入,一般只会写入一次。Session数据写入之前会首先进行序列化,默认的序列化方法是serialize/unserialize,你可以在session配置文件中设置serialize参数(数组)来改变默认的序列化机制,例如:
'serialize' => ['json_encode', 'json_decode'],
Session类本身的用法和之前版本基本一致,增加了push方法用于追加一个session数组。
Cookie
Cookie的存取机制是分开设计的,读取操作是通过$_COOKIE读取,写入则通过可扩展的方式满足不同运行环境的Cookie写入要求。Cookie数据的写入操作也是在当前请求发送响应数据之前统一写入。
但在实际使用中,Cookie的用法和之前类似,区别在于不再支持前缀配置和清空操作。
PHP中文网,大量的免费ThinkPHP入门教程,欢迎在线学习!
学习专题:php session (包含图文、视频、案例)
本文转自:https://blog.think/1077719
# session
# cookie
# 如果你
# 运行环境
# 你可以
# 序列化
# 配置文件
# 都是
# 是在
# 目录下
# 但在
# 会在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在香港服务器上快速搭建免备案网站?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
lovemo网页版地址 lovemo官网手机登录
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何在阿里云完成域名注册与建站?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
详解jQuery中的事件
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
js实现获取鼠标当前的位置
Firefox Developer Edition开发者版本入口
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
如何快速查询域名建站关键信息?
如何批量查询域名的建站时间记录?
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Python面向对象测试方法_mock解析【教程】
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何选择PHP开源工具快速搭建网站?
*服务器网站为何频现安全漏洞?
手机网站制作与建设方案,手机网站如何建设?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何处理和验证JSON类型的数据库字段
JavaScript如何实现错误处理_try...catch如何捕获异常?
香港服务器部署网站为何提示未备案?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Python图片处理进阶教程_Pillow滤镜与图像增强
如何打造高效商业网站?建站目的决定转化率
如何快速使用云服务器搭建个人网站?
Laravel如何使用Eloquent进行子查询
如何实现javascript表单验证_正则表达式有哪些实用技巧
JavaScript实现Fly Bird小游戏
C++时间戳转换成日期时间的步骤和示例代码
Laravel如何使用Gate和Policy进行授权?(权限控制)
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何破解联通资金短缺导致的基站建设难题?
如何快速打造个性化非模板自助建站?
如何用y主机助手快速搭建网站?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
如何快速搭建个人网站并优化SEO?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
linux写shell需要注意的问题(必看)
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
网易LOFTER官网链接 老福特网页版登录地址
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何为不同团队 ID 动态生成多个“认领值班”按钮
UC浏览器如何设置启动页 UC浏览器启动页设置方法

