PHP Cookie 全面详解
                           
天天向上
发布: 2025-03-20 23:56:28

原创
56 人浏览过

1. 什么是 Cookie?

Cookie 是存储在用户浏览器中的小型文本数据,通常用于保存用户会话信息、偏好设置、跟踪用户行为等。PHP 提供了内置的 setcookie() 函数来操作 Cookie。


2. 设置 Cookie

PHP 使用 setcookie() 函数来创建 Cookie:

setcookie(name, value, expire, path, domain, secure, httponly);

参数说明:

参数说明
nameCookie 名称
valueCookie 值
expire过期时间(Unix 时间戳,time() + 秒数
path适用路径(/ 表示整个网站)
domain适用域名(.example.com 适用于所有子域)
securetrue 仅在 HTTPS 连接下传输
httponlytrue 防止 JavaScript 访问(防范 XSS 攻击)

示例:设置一个 1 小时后过期的 Cookie

setcookie("user", "JohnDoe", time() + 3600, "/");

3. 读取 Cookie

PHP 通过 $_COOKIE 超全局数组访问 Cookie:

if (isset($_COOKIE['user'])) {
    echo "Hello, " . $_COOKIE['user'];
} else {
    echo "Cookie 未设置";
}

4. 删除 Cookie

要删除 Cookie,可以将 setcookie()expire 参数设为过去的时间:

setcookie("user", "", time() - 3600, "/");

5. Cookie 安全性

为了提高 Cookie 的安全性,建议:

  1. 使用 secure 参数:在 HTTPS 站点上设置 setcookie()secure=true,防止明文传输:
   setcookie("user", "JohnDoe", time() + 3600, "/", "", true, true);
  1. 使用 httponly 参数:防止 JavaScript 访问,防范 XSS 攻击:
   setcookie("user", "JohnDoe", time() + 3600, "/", "", false, true);
  1. 使用 SameSite 保护(PHP 7.3+ 支持):
   setcookie("user", "JohnDoe", [
       'expires' => time() + 3600,
       'path' => '/',
       'secure' => true,
       'httponly' => true,
       'samesite' => 'Strict' // 'Lax' 或 'Strict'
   ]);

6. Cookie 与 Session 的区别

对比项CookieSession
存储位置客户端浏览器服务器端
适用范围跨多个页面持久存储仅限当前会话
生命周期可设置过期时间默认会话关闭后销毁
安全性易被篡改更安全

如果涉及用户身份验证,建议使用 Session 而非 Cookie。


7. 常见问题

Q1: 为什么 setcookie() 没有生效?

  • setcookie() 必须在任何输出之前调用(包括 HTML 代码或 echo)。
  • 确保未调用 session_start() 之前输出内容。

Q2: 如何查看 Cookie?

  • 在浏览器控制台 (F12ApplicationStorageCookies) 查看。

8. 参考资料

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *