PHP-Cookie
Cookie 是什么?
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
设置Cookie
在PHP中,你可以使用 setcookie() 函数来设置一个Cookie。这个函数必须在任何HTML输出之前调用,因为HTTP头(包括设置Cookie的头)必须在发送任何实际内容之前发送。
<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天
上面的代码设置了一个名为 "user" 的Cookie,值为 "John Doe",并且这个Cookie将在7天后过期。time() + (86400 * 7) 计算了7天后的时间戳
读取Cookie
一旦设置了Cookie,你就可以通过全局数组 $_COOKIE 来访问它。
<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天
if(isset($_COOKIE["user"])) {echo "User is " . $_COOKIE["user"];} else {echo "User is not set.";}
输出结果:
删除Cookie
要删除一个Cookie,你可以通过设置它的过期时间为过去的一个时间点来实现。注意,删除Cookie时,你必须设置与创建Cookie时相同的路径和域。
<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天if(isset($_COOKIE["user"])) {echo "User is " . $_COOKIE["user"];} else {echo "User is not set.";}// 设置Cookie的过期时间为过去的时间
setcookie("user", "", time() - 3600);
然而,仅仅设置过期时间可能不足以删除所有Cookie,特别是如果它们有特定的路径或域设置。为了确保删除,你应该尽量使用与创建时相同的参数来调用 setcookie()。
Cookie的属性
setcookie() 函数还支持其他几个参数,允许你设置Cookie的路径、域、安全性(HTTPS)和HTTPOnly属性。
setcookie("TestCookie", $value, time() + 3600, "/path/", "example.com", true, true);
- 路径(/path/):Cookie有效的服务器上的路径。
- 域(example.com):Cookie有效的域。
- 安全性(true):如果设置为 true,则Cookie只能通过HTTPS发送。
- HTTPOnly(true):如果设置为 true,则Cookie不能通过客户端脚本访问(例如JavaScript)。这增加了安全性,因为它防止了跨站脚本(XSS)攻击中Cookie的窃取。
注意事项
- Cookie的大小限制通常是4KB。
- 浏览器对同一域名下的Cookie数量有限制(通常是20个)。
- Cookie是存储在客户端的,因此它们可以被用户查看和修改。不要依赖Cookie来存储敏感信息。
- 对于需要更高安全性的数据,应该考虑使用HTTPS和会话(Session)机制。