HoRain云--PHP Cookie实战
本文详细介绍了PHP中Cookie的使用方法,包括设置、读取、删除Cookie以及常见属性。Cookie是服务器发给浏览器的小数据,用于存储登录状态、用户偏好等信息。文章重点讲解了Cookie的安全设置,推荐使用HttpOnly和SameSite属性防止XSS和CSRF攻击,并对比了Cookie与Session的差异。实战示例展示了如何用Cookie实现记住登录状态功能,同时提醒注意常见问题如中文

🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录

PHP 中的 Cookie 是一种客户端存储机制,常用于登录状态、用户偏好、购物车等场景。下面我用「原理 + 用法 + 安全」给你一套标准实战方案 ✅
一、Cookie 是什么?
Cookie = 服务器发给浏览器的“小纸条”
浏览器每次请求会自动携带
浏览器 ← Cookie → 服务器
⚠️ Cookie 存储在客户端
二、设置 Cookie(setcookie)
✅ 基本用法
setcookie("username", "Tom");
⚠️ 必须在任何 HTML 输出之前调用
✅ 带有效期(秒)
setcookie("username", "Tom", time() + 3600); // 1 小时
✅ 完整参数
setcookie(
"username", // 名称
"Tom", // 值
time() + 86400, // 过期时间
"/", // 路径
"", // 域名
false, // HTTPS only
true // HttpOnly
);
三、读取 Cookie
echo $_COOKIE['username'];
✅ 判断是否存在:
if (isset($_COOKIE['username'])) {
echo $_COOKIE['username'];
}
四、删除 Cookie
✅ 通过设置过期时间为过去
setcookie("username", "", time() - 3600);
⚠️ 路径 / 域名必须一致
五、Cookie 数组
setcookie("user[name]", "Tom");
setcookie("user[age]", 18);
读取:
echo $_COOKIE['user']['name'];
六、Cookie 常见属性(⭐重点)
|
属性 |
作用 |
|---|---|
|
expire |
过期时间 |
|
path |
生效路径 |
|
domain |
生效域名 |
|
secure |
仅 HTTPS |
|
httponly |
JS 无法访问(防 XSS) |
|
samesite |
防 CSRF |
✅ 安全推荐写法
setcookie("token", $token, [
'expires' => time() + 3600,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
七、Cookie 的限制 ⚠️
|
限制 |
说明 |
|---|---|
|
大小 |
≈ 4KB |
|
数量 |
≈ 20~50 / 域名 |
|
明文 |
不安全 |
|
可被禁用 |
不稳定 |
❌ 不要存密码、敏感信息
八、Cookie vs Session(必会)
|
对比 |
Cookie |
Session |
|---|---|---|
|
存储位置 |
客户端 |
服务器 |
|
安全性 |
低 |
高 |
|
大小 |
小 |
大 |
|
性能 |
快 |
稍慢 |
✅ 最佳实践
Cookie 存 session_id
Session 存真实数据
九、实战示例:记住登录状态
if ($loginSuccess) {
setcookie("user", $username, time() + 7 * 86400, "/");
}
下次访问:
if (isset($_COOKIE['user'])) {
echo "欢迎回来," . $_COOKIE['user'];
}
十、常见坑 ⚠️
|
问题 |
原因 |
|---|---|
|
Cookie 不生效 |
输出前有 HTML |
|
删不掉 |
路径不一致 |
|
中文乱码 |
未 urlencode |
|
不安全 |
没开 HttpOnly |
✅ 中文处理:
setcookie("name", urlencode("张三"));
echo urldecode($_COOKIE['name']);
十一、一句话总结
Cookie = 客户端小数据 + 自动携带 + 必须安全
如果你愿意,我可以继续帮你:
✅ Cookie + Session 登录系统
✅ JWT vs Cookie 对比
✅ Laravel / ThinkPHP Cookie 用法
✅ XSS / CSRF 防御实战
你现在做的是 登录 / 电商 / API / 后台系统?我可以按场景讲 😊
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐



所有评论(0)