PHP 网站 Cookie 处理指南

设置 Cookie

php

// 设置cookie(24小时过期)setcookie("username", "JohnDoe", time() + 86400, "/");// 带安全选项的cookie(仅HTTP访问,防止JS窃取)setcookie("secure_token", "abc123", [ 'expires' => time() + 86400, 'path' => '/', 'domain' => 'example.com', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict']);

读取 Cookie

php

// 读取单个cookieif(isset($_COOKIE["username"])) { echo "欢迎回来," . htmlspecialchars($_COOKIE["username"]);}// 读取所有cookieforeach ($_COOKIE as $key => $value) { echo "$key : $value
";}

更新 Cookie

php

// 更新cookie(实际上是覆盖)setcookie("username", "NewName", time() + 86400, "/");

删除 Cookie

php

// 删除cookie(设置过期时间为过去)setcookie("username", "", time() - 3600, "/");

安全注意事项

  1. 始终验证和过滤cookie数据
  2. 对输出到页面的cookie值使用
  3. htmlspecialchars()
  4. 敏感信息不要存储在cookie中
  5. 考虑使用会话(session)替代cookie存储敏感数据
  6. 实现CSRF保护机制

高级用法 - Cookie数组

php

// 设置数组型cookiesetcookie("user[]", "John", time() + 3600);setcookie("user[role]", "admin", time() + 3600);// 读取数组型cookieprint_r($_COOKIE["user"]);

最佳实践

  • 为cookie设置适当的过期时间
  • 指定明确的path和domain限制
  • 生产环境启用secure和httponly标志
  • 考虑使用SameSite属性防止CSRF攻击
  • 遵守GDPR等隐私法规,必要时获取用户同意