ThinkPHP中Session和Cookie操作统一简洁,通过session()或cookie()函数配合参数实现赋值、读取、删除、清空;Session存服务器端适合敏感数据,Cookie存客户端适合非敏感小数据。

ThinkPHP 中操作 Session 和 Cookie 非常统一、简洁,核心是用一个函数(`session()` 或 `cookie()`)配合不同参数完成赋值、读取、删除、清空等全部动作。不需要记多个方法名,逻辑清晰,上手快。
Session 的基本用法
Session 数据存在服务器端,适合存登录态、用户权限、临时表单数据等敏感或需保障一致性的信息。
-
设置值:直接传键和值,如
session('user_id', 123);支持嵌套写法,如session('cart.items', ['a','b']) -
读取值:只传键名,如
session('user_id');不传参数则返回整个 $_SESSION 数组(带前缀时自动过滤) -
判断是否存在:用问号前缀,如
session('?user_id'),返回 true/false -
删除单个项:把值设为
null,如session('user_id', null) -
清空当前作用域所有 Session:
session(null)
Cookie 的基本用法
Cookie 存在客户端浏览器,适合存语言偏好、主题设置、访客标识等非敏感、可持久化的小数据。
-
设置 Cookie:支持简单写法
cookie('theme', 'dark'),也支持带选项的数组配置:cookie('token', 'abc123', ['expire'=>86400, 'path'=>'/', 'domain'=>'.your.com', 'httponly'=>true, 'secure'=>true]) -
读取 Cookie:同 Session,
cookie('theme');无参调用返回全部 $_COOKIE(含前缀) -
删除 Cookie:设为
null,如cookie('theme', null) -
清空所有 Cookie:
cookie(null)
关键配置与安全建议
Session 和 Cookie 的行为由配置驱动,推荐在 config/app.php 或 config/session.php 中统一管理。
由 ReMe 驱动的记忆管理系统,支持跨会话记忆持久化、自动应用用户偏好以及智能上下文压缩...
-
Session 过期时间:配置
'expire' => 3600(单位秒),设为 0 表示跟随 PHP 默认(通常 1440 秒) -
Cookie 加密:开启
'cookie' => ['auto_encrypt' => true, 'secret_key' => 'your-strong-key'],框架自动加解密,防止篡改 -
安全强化:生产环境务必设置
'httponly' => true(防 XSS)、'secure' => true(仅 HTTPS)、'samesite' => 'Strict'(防 CSRF) -
作用域控制:通过
'prefix'隔离不同模块的 Session/Cookie,避免冲突;'domain'支持跨子域共享(如'.example.com')
注意事项与常见问题
实际开发中几个容易踩坑的点:
- Session 必须在输出任何内容前启动;伪静态或中间件中读写 Session 前,确认
session_start()已执行(可在public/index.php开头手动加) - Cookie 设置后不会立即在当前请求的 $_COOKIE 中体现,要下一次请求才生效;读取刚 set 的值,请直接用变量缓存
- 多语言切换、登录态维持等场景,优先用 Session 存状态,Cookie 只作轻量兜底或首次识别
- 不要在 Cookie 中存密码、token 等敏感信息;即使加密,也应配合服务端 Session 校验,遵循“服务端可信”原则
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










