php cookie 实现
PHP Cookie 的基本设置
使用 setcookie() 函数设置 Cookie。该函数接受多个参数,包括名称、值、过期时间等。
示例代码:
setcookie("user", "John Doe", time() + 3600, "/"); // 设置名为 "user" 的 Cookie,1 小时后过期
- 第一个参数是 Cookie 名称(必填)。
- 第二个参数是 Cookie 值(可选,默认为空字符串)。
- 第三个参数是过期时间(可选,
time() + 秒数表示未来时间)。 - 第四个参数是路径(可选,默认为当前路径)。
读取 Cookie
通过 $_COOKIE 超全局数组读取 Cookie 值。
示例代码:
if (isset($_COOKIE["user"])) {
echo "Cookie 'user' 的值是: " . $_COOKIE["user"];
} else {
echo "Cookie 'user' 未设置";
}
删除 Cookie
通过设置过期时间为过去的时间来删除 Cookie。
示例代码:
setcookie("user", "", time() - 3600, "/"); // 将过期时间设置为 1 小时前
Cookie 的安全设置
- HttpOnly:防止 JavaScript 访问 Cookie,增强安全性。
- Secure:仅通过 HTTPS 传输 Cookie。
- SameSite:防止跨站请求伪造(CSRF)。
示例代码:
setcookie(
"secure_cookie",
"sensitive_data",
time() + 3600,
"/",
"example.com",
true, // Secure
true // HttpOnly
);
检查 Cookie 是否启用
可以通过设置一个测试 Cookie 并重定向页面来检查浏览器是否支持 Cookie。
示例代码:
setcookie("test_cookie", "test", time() + 3600, "/");
if (isset($_COOKIE["test_cookie"])) {
echo "Cookie 已启用";
} else {
echo "Cookie 未启用";
}
常见问题
- Cookie 未生效:确保
setcookie()在输出任何内容之前调用。 - 路径问题:如果路径设置为
/subdir,Cookie 仅在/subdir及其子目录下有效。 - 域名限制:Cookie 默认仅在当前域名下有效,跨域名需明确指定。







