在PHP开发中,Cookie常用于在客户端保存少量用户状态信息,比如登录令牌或界面偏好。理解PHPCookie怎么设置以及后续如何管理,是构建有状态Web应用的基础。下面介绍具体的创建方式与维护技巧。

一、使用setcookie创建Cookie
PHP内置的setcookie()函数用于在HTTP响应头中下发Cookie。最基础的写法只需指定名称和值:
<?php
// 设置一个名为user的Cookie,值为tom,默认随浏览器关闭失效
setcookie('user', 'tom');
echo 'Cookie已下发';
?>
需要注意的是,setcookie()必须在任何实际页面输出之前调用,否则会因已发送主体而无法写入响应头。
二、设置过期时间与有效路径
为了让Cookie在关闭浏览器后依然保留,需要传入过期时间戳。以下示例将其设为一天后过期,并限制仅在根路径下有效:
<?php
// 过期时间:当前时间加86400秒(一天)
$expire = time() + 86400;
// 路径设为/,全站可访问
setcookie('theme', 'dark', $expire, '/');
?>
| 参数 | 说明 |
|---|---|
| name | Cookie名称 |
| value | Cookie值 |
| expire | 过期时间,Unix时间戳 |
| path | 服务器上可用路径 |
三、读取与删除Cookie
浏览器再次请求时,PHP会自动将Cookie填入超全局数组$_COOKIE。读取方式如下:
<?php
if (isset($_COOKIE['user'])) {
echo '当前用户:' . htmlspecialchars($_COOKIE['user']);
}
?>
删除Cookie的本质是设置一个已过期的时间,让浏览器主动清除:
<?php
// 将过期时间设为过去,浏览器收到后删除
setcookie('user', '', time() - 3600, '/');
?>
四、提升安全性的管理技巧
- 设置
httponly为true,禁止前端脚本读取,降低XSS风险。 - 如果是HTTPS站点,将
secure设为true,仅通过加密连接传输。 - 不要在Cookie中存放敏感明文,可保存签名后的令牌。
<?php
// 开启HttpOnly与Secure的安全Cookie
setcookie('token', 'abc123', [
'expires' => time() + 86400,
'path' => '/',
'httponly' => true,
'secure' => true
]);
?>
合理运用PHPCookie的创建与管理技巧,可以有效维持用户会话,同时兼顾基础安全。在复杂状态场景中,建议结合服务端session使用。
五、常见错误排查
若发现Cookie未生效,优先检查是否有提前输出、域名不匹配或浏览器禁用了第三方Cookie。利用浏览器开发者工具的Application面板可直观查看下发与存储情况。