1. COOKIE概述
COOKIE是指存储在客户端浏览器端的一种数据。我们可以使用PHP设置COOKIE来实现一些功能,例如自动登录,防止重复提交等。在发送HTTP请求时,浏览器会将相关COOKIE信息自动附加在请求头中,并发送给后台服务器。
COOKIE通常包含如下内容:
名称:用于标识COOKIE的名称
值:用于存储COOKIE的值
过期时间:指定COOKIE的过期时间,过期后COOKIE将被浏览器自动删除
2. 创建COOKIE
2.1 setcookie()函数
setcookie()函数用于在客户端浏览器上创建一个COOKIE,函数原型为:
bool setcookie(string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]])
参数说明:
name:COOKIE的名称,必填参数
value:COOKIE的值,可选参数
expire:指定COOKIE的过期时间,Unix时间戳格式,默认为0,表示COOKIE在浏览器关闭时即被删除
path:指定COOKIE可用的路径,默认为“/”,表示整个域名下可以访问该COOKIE
domain:指定COOKIE可用的域名,默认为空,即当前域名
secure:指定COOKIE是否采用安全方式传输,在HTTPS协议之上,默认为false
httponly:指定COOKIE是否只能在HTTP协议中使用,默认为false
例如,我们可以创建一个COOKIVE,名为“MyCookie”,值为“Hello World”,并指定过期时间为10小时:
setcookie('MyCookie', 'Hello World', time() + 36000);
2.2 $_COOKIE数组
浏览器发送一个HTTP请求时,如果请求头中包含该域名下的COOKIE信息,那么PHP会自动将相关COOKIE信息存储在$_COOKIE数组中,我们可以通过该数组获取相关COOKIE的值。
例如,上面创建的COOKIVE,名为“MyCookie”,值为“Hello World”,可以通过如下代码获取它的值:
if (isset($_COOKIE['MyCookie']) && !empty($_COOKIE['MyCookie'])) {
echo 'MyCookie的值是' . $_COOKIE['MyCookie'];
}
3. 销毁COOKIE
我们可以通过setcookie()函数,将COOKIE的过期时间设置为当前时间戳,以达到删除COOKIE的效果,例如:
setcookie('MyCookie', '', time() - 3600);
上述代码将名为“MyCookie”的COOKIE的过期时间设置为了一个过去的时间,浏览器将该COOKIE从客户端删除。
4. 注意事项
在创建COOKIE时,需要注意以下几点:
COOKIE的名称必须唯一,不能与其他COOKIE重名
COOKIE的值不能包含特殊字符,例如空格、分号等,否则需要进行URL编码
COOKIE的值的大小通常限制在4KB以内
COOKIE的过期时间不应设定过长,否则可能会对用户的隐私产生不良影响
COOKIE不能跨域名使用
COOKIE不能跨路径使用