标签:
转载请标明出处:
http://blog.csdn.net/hai_qing_xu_kong/article/details/51922536
本文出自:【顾林海的博客】
距离写博客已经过了一两个礼拜了,这段时间比较忙,在新公司需要熟悉项目,这段时间准备在一些渠道首发,因此需要大量时间去修复BUG和添加功能。好了,继续本章的话题。
Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制。简单地说,Cookie是Web服务器暂时存储在用户硬盘上的一个文本文件,并随后被Web浏览器读取。当用户再次访问Web网站时,网站通过读取Cookies文件记录这位访客的特定信息(如上次访问的位置、花费的时间、用户名和密码等),从而迅速作出响应,如在页面中不需要输入用户的ID和密码即可直接登录网站等。
文本文件的命令格式如下:
用户名@网站地址[数字].txt
Web服务器可以应用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookie常用于以下3个方面:
在PHP中通过setcookie()函数创建Cookie。语法格式如下:
bool setcookie(string name[,string value[,int expire[, string path[,string domain[,int secure]]]]])
参数 | 说明 | 举例 |
---|---|---|
name | Cookie的变量名 | 可以通过$_COOKIE[“cookiename”]调用变量名为cookiename的Cookie |
value | Cookie变量的值,该值保存在客户端,不能用来保存敏感数据 | 可以通过$_COOKIE[“values”]获取名为values的值 |
expire | Cookie的失效时间,expire是标准的UNIX时间标记,可以用time()函数或mktime()函数获取,单位为秒 | 如果不设置Cookie的失效时间,那么Cookie将永远有效,除非手动将其删除 |
path | Cookie在服务器端的有效路径 | 如果该参数设置为“/”,则它在整个domain内有效,如果设置为“/11”,它在domain下的/11目录及子目录内有效。默认是当前目录 |
domain | Cookie有效的域名 | 如果要使Cookie在hhh.com域名下的所有子域都有效,应该设置为hhh.com |
secure | 指明Cookie是否仅通过安全的HTTPS,值为0或1 | 如果值为1,则Cookie只能在HTTPS连接上有效;如果值为默认值0,则Cookie在HTTP和HTTPS连接上均有效 |
在PHP中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/>
<title>PHP语言基础</title>
</head>
<body>
<?php
date_default_timezone_set("PRC");
header("Content-Type:text/html; charset=gb2312");
if (!isset($_COOKIE["visittime"])) {
setcookie("visittime", date("y-m-d H:i:s"));
echo "这是第一次保存Cookie"."<br>";
} else {
setcookie("visittime", date("y-m-d H:i:s"), time() + 60);
echo "上次访问时间为:" . $_COOKIE["visittime"];
echo "<br>";
}
echo "本次访问时间:" . date("y-m-d H:i:s");
?>
</body>
</html>
第一次运行结果:
这是第一次保存Cookie
本次访问时间:16-07-16 08:26:25第二次运行结果:
上次访问时间为:16-07-16 08:26:25
本次访问时间:16-07-16 08:27:25
上述代码,先通过isset()函数检测Cookie文件是否存在,不存在通过setcookie()函数创建一个Cookie文件,如果存在设置Cookie的失效时间为60秒。
当Cookie被创建后,如果没有设置它的失效时间,其Cookie文件会在关闭浏览器时被自动删除。如果要在关闭浏览器之前删除Cookie文件,方法有两种:一种是使用setcookie()函数删除,另一种是在浏览器中手动删除Cookie。下面分别进行介绍。
1.使用setcookie()函数删除Cookie
删除Cookie和创建Cookie的方式基本类似,删除Cookie也使用setcookie()函数。删除Cookie只需要将setcookie()函数中的第二个参数设置为空值,将第3个参数Cookie的过期时间设置为小于系统的当前时间即可。
例如,将Cookie的过期时间设置为当前时间减1秒,代码如下:
setcookie("name", "", time()-1);
在上面的代码中,time()函数返回以秒表示的当前时间戳,把过期时间减1秒就会得到过去的时间,从而删除Cookie。
2.在浏览器中手动删除Cookie
在使用Cookie时,Cookie自动生成一个文本文件存储在IE浏览器的Cookies临时文件夹中。在浏览器中删除Cookie文件是非常便捷的方法。
如果Cookie不设定时间,就表示它的生命周期为浏览器会话的期间,只要关闭IE浏览器,Cookie就会自动消失。这种Cookie被称为会话Cookie,一般不保存在硬盘上,而是保存在内存中。
如果设置了过期时间,那么浏览器会把Cookie保存到硬盘中,再次打开IE浏览器时会依然有效,直到它的有效期超时。
虽然Cookie可以长期保存在客户端浏览器中,但也不是一成不变的。因为浏览器最多允许存储300个Cookie文件,而且每个Cookie文件支持最大容量为4KB;每个域名最多支持20个Cookie,如果达到限制时,浏览器会自动地随机删除Cookies。
标签:
原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/51922536