PHP Cookie是存储在浏览器的轻量级数据机制,用于保存用户偏好等非敏感信息;通过setcookie()设置(需在输出前调用),$_COOKIE读取;应启用httponly、secure、正确domain/path以保障安全;删除需覆盖过期时间且参数一致。

PHP 中的 Cookie 是一种将少量数据存储在用户浏览器端的机制,适合保存用户偏好、登录状态标识(非敏感信息)、语言选择等轻量级持久化需求。它通过 HTTP 响应头发送给浏览器,由浏览器自动在后续请求中携带回服务器。
Cookie 的基本设置与读取
使用 setcookie() 函数向客户端写入 Cookie,必须在任何输出(包括空格、HTML、echo)之前调用。该函数至少需传入名称和值两个参数:
- setcookie('user_name', 'Alice', time() + 3600); —— 设置名为 user_name 的 Cookie,值为 Alice,有效期 1 小时
- Cookie 值会自动 URL 编码,读取时 PHP 自动解码,无需手动处理
- 读取时直接通过 $_COOKIE['user_name'] 获取,但建议先用 isset($_COOKIE['user_name']) 判断是否存在
安全与作用域控制要点
默认 Cookie 对当前目录及子目录下的所有页面可见,且可通过 JavaScript 访问,存在基础安全风险。生产环境应主动加固:
- 添加 httponly=true 参数防止 JS 读取:setcookie('token', $val, $expire, '/', '', true, true);
- 设置 secure=true 确保仅通过 HTTPS 传输(上线必备)
- 指定 domain(如 '.example.com')可跨子域名共享;设为 / 可让 Cookie 在整个站点生效
- 避免在 Cookie 中存放密码、token 密钥等敏感内容,仅存无意义标识符(如 session_id)
删除与过期 Cookie
Cookie 无法直接“删除”,只能通过覆盖方式使其立即失效:
网趣购物系统静态版支持网站一键静态生成,采用动态进度条模式生成静态,生成过程更加清晰明确,商品管理上增加淘宝数据包导入功能,与淘宝数据同步更新!采用领先的AJAX+XML相融技术,速度更快更高效!系统进行了大量的实用性更新,如优化核心算法、增加商品图片批量上传、谷歌地图浏览插入等,静态版独特的生成算法技术使静态生成过程可随意掌控,从而可以大大减轻服务器的负担,结合多种强大的SEO优化方式于一体,使
立即学习“PHP免费学习笔记(深入)”;
- 调用 setcookie('user_name', '', time() - 3600);,把过期时间设为过去即可清除
- 注意:删除时 domain、path、secure、httponly 等参数需与设置时完全一致,否则可能失败
- 浏览器关闭后 Cookie 是否保留,取决于是否设置了过期时间:不设则为会话 Cookie(关闭即丢),设了则为持久 Cookie(存到过期)
基本上就这些。Cookie 简单直接,但容易忽略安全细节和路径作用域问题,用对了很顺手,用错了可能白存或埋隐患。










