2022-12-02 03:14:04
PHP通过setcookie()函数设置Cookie,并通过$_COOKIE超全局数组读取、更新和删除Cookie。 以下是具体方法:
一、设置Cookie使用setcookie()函数向客户端发送HTTP Set-Cookie头,需在输出任何内容前调用,否则会失败。
参数说明:
名称:Cookie的唯一标识(必需)。
值:存储的数据(必需)。
有效期:时间戳(如time()+3600表示1小时后过期),未设置则默认为会话Cookie(浏览器关闭后失效)。
路径:Cookie的有效路径(如"/"表示整个站点)。
域名:指定可访问Cookie的域名(如".example.com")。
安全标志:仅通过HTTPS传输(true或false)。
HttpOnly:禁止JavaScript访问(增强安全性)。
示例代码:
// 设置单个Cookiesetcookie("user", "JohnDoe", time()+3600, "/");// 设置数组型Cookie(需多次调用或使用多维键名)setcookie("pref[lang]", "zh", time()+3600);setcookie("pref[theme]", "dark", time()+3600);通过$_COOKIE超全局数组获取客户端发送的Cookie值,需确保Cookie已成功设置且页面刷新后生效。
访问单个Cookie:
if (isset($_COOKIE['user'])) { echo $_COOKIE['user']; // 输出: JohnDoe}访问数组型Cookie:
if (isset($_COOKIE['pref']['lang'])) { echo $_COOKIE['pref']['lang']; // 输出: zh}注意事项:
使用isset()检查避免未定义索引错误。
数组型Cookie需确保子键已正确设置(如pref[lang]和pref[theme]需分别设置)。
更新Cookie:重新调用setcookie()并使用相同名称发送新值。
setcookie("user", "JaneDoe", time()+3600, "/"); // 覆盖原有值删除Cookie:将过期时间设为过去时间点,值可为空字符串。
setcookie("user", "", time()-3600, "/"); // 立即删除名为"user"的Cookie删除数组型Cookie:
逐个清除子项:setcookie("pref[lang]", "", time()-3600);setcookie("pref[theme]", "", time()-3600);
整体标记为过期(需浏览器支持):setcookie("pref", "", time()-3600, "/"); // 可能无法完全清除所有子项
敏感数据(如密码)不应存储在Cookie中。
启用HttpOnly和Secure标志防止XSS和中间人攻击。
通过以上方法,可灵活实现PHP中的Cookie操作,满足用户状态存储和行为跟踪需求。