Cookie实际上是一个很小的文本文件,网站通过向用户硬盘中写入一个Cookie文件来标识用户。当用户下次再访问该网站时,浏览器会将Cookie信息发送给网站服务器,服务器通过读取以前写入的Cookie文件中的信息,就能识别该用户。
Cookie的两种形式:
(1)会话Cookie。临时性的,只在浏览器打开时存在,主要用来实现Session技术。
(2)永久Cookie。永久性的,保存在用户硬盘上并在有效期内一直可用。
创建和修改Cookie
在PHP中,利用setcookie()函数可以创建和修改Cookie,以及设置Cookie的有效期;而使用$_COOKIE[]数组可以读取Cookie变量的值。
setcookie(name,value[,exprie,path,domain,secure]);//创建Cookie
参数:
name:Cookie的变量名
value:Cookie的变量值
expire:Cookie的有效期
path:Cookie的服务器路径
domain:Cookie的有效域名
secure:是否采用HTTPS来传输Cookie
说明:
(1)除了name和value是必需参数外,其他参数都是可选的。
(2)没有设置有效期的Cookie为会话Cookie。
(3)修改永久Cookie时若没设置有效期,该Cookie将被修改为会话Cookie。
(4)在使用setcookie()函数前,不要有任何HTML内容输出到浏览器,否则setcookie()创建Cookie将失败。因为Cookie也是作为HTTP协议头的一部分。
(5)Cookie变量的值总时字符串数据类型。
使用header设置Cookie:
header('Set-Cookie:name=value;expires=".gmstrftime("%A,%d-%b-%Y %H:%M:%S GMT",time()+10)');
删除Cookie的方法:
(1)将Cookie的变量值设置为空,并且不设置有效期,不设置有效期将删除Cookie文件中的Cookie变量。
(2)将Cookie的有效期设置为过去的某个时刻。
无论哪种方法,浏览器收到这样的Cookie响应头信息后,将自动删除用户硬盘中的Cookie文件和内存中的Cookie信息。
使用setcookie()函数创建及删除Cookie数组
//test1.php
<?php
setcookie("user[name]","admin",time()+600);
setcookie("user[pw]","123456",time()+600);
setcookie("user[city]","china",time()+600);
echo '创建Cookie信息成功,<a href="test2.php">点击查看Cookie信息</a>';
?>
//test2.php
<?php
echo "Cookie信息:<br/>";
if(isset($_COOKIE['user'])){
foreach($_COOKIE['user'] as $key=>$value){
echo $key."=>".$value."<br/>";
}
echo '<a href="test3.php">删除Cookie信息</a>';
}
else{
var_dump($_COOKIE);
}
?>
//test3.php
<?php
setcookie('user[name]',"");
setcookie('user[pw]',"123456",time()-1);
setcookie('user[city]',"china",time()-1);
echo '已清空Cooike信息,<a href="test2.php">返回查看Cookie信息</a>';
?>
运行截图