Cookie

来源:互联网 发布:linux定时器函数 编辑:程序博客网 时间:2024/05/05 04:40
了解Cookie
Cookie是在HTTP协议下,将服务器传递给浏览器的少量数据保存到用户浏览器的一种方式。通过这种方式,即使在浏览器被关闭和连接中断的情况下,用户仍然可以维护状态数据。
更确切的说,Cookie是保存在用户硬盘上的由字符串组成的小文本文件。
在Cookies文件夹下,每个Cookie文件都是一个简单而又普通的文本文件,而不是程序。Cookies中的内容大多经过了加密处理,因此,表面上看来只是一些字母和数字的组合,而只有服务器的CGI处理程序才知道它们的真正含义。
Cookie可以让web页面更有针对性,更加友好,可以保存关于用户的重要信息,包括使用的语言,阅读和音乐偏好,访问站点次数,购物车中的物品记录等。
常用于以下三个方面:
1:记录访客的某些信息。
2:在页面之间传递变量。
3:将所查看的Internet页存储在cookie临时文件夹中,这样可以提高以后浏览的速度。
注:
一般不要用Cookie来保存数据或其他大量数据,并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端计算机中,因此最好不要保存敏感、未加密的数据、否则会影响网络的安全性



创建Cookie
Cookie是经由服务器端的程序通过HTTP请求和响应发送到浏览器的,是HTTP头标的组成部分,而头标必须在页面其他内容之前发送。即使是一个HTML标记或者echo语句,甚至一个空行都会导致程序出错。
在PHP中通过setcookie()函数创建cookie,至少接受一个参数,也就是cookie的名称(如果只设置了名称参数,那么在远程客户端上的同名Cookie会被删除)
语法如下:

cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。

必须在任何其他输出发送前对 cookie 进行赋值。

如果成功,则该函数返回 true,否则返回 false。

setcookie(name,value,expire,path,domain,secure)
参数描述name必需。规定 cookie 的名称。value必需。规定 cookie 的值。expire可选。规定 cookie 的有效期。path可选。规定 cookie 的服务器路径。domain可选。规定 cookie 的域名。secure可选。规定是否通过安全的 HTTPS 连接来传输 cookie。例如:

setcookie("TMCookie",'PHP从基础到项目实战');setcookie("TMCookie",'PHP从基础到项目实战',time()+60);//设置Cookie有效时间为60s//设置有效时间为60s,有效目录为/tm/,有效域名为107lab.com及其所有子域名setcookie("TMCookie",'PHP从基础到项目实战',time()+60,"/tm/",".107lab.com",1);

注意:在HTTP协议中规定,每个站点向单个用户最多只能发送20个Cookie



读取Cookie
在PHP中通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值。
例如:
if(!isset($_COOKIE["visit_time"])){//检测Cookie文件是否存在,如果不存在    setcookie("visit_time",date("Y-m-d H:i:s"));//设置一个Cookie变量    echo "欢迎您第一次访问本网站!";}else{//如果存在    setcookie("visit_time",date("Y-m-d H:i:s"),time()+60);//设置Cookie失效时间    echo "您上次访问本网站的时间为".$_COOKIE["visit_time"];//输出上次访问网站的时间    echo '<br>';}echo "您本次访问网站的时间为:".date("Y-m-d H:i:s");

运行结果为:
欢迎您第一次访问本网站!您本次访问网站的时间为:2016-04-04 16:33:30 
刷新一下,运行结果为:
您上次访问本网站的时间为2016-04-04 16:33:30
您本次访问网站的时间为:2016-04-04 16:33:58 

注:
如果未设置Cookie的到期时间,将在关闭浏览器时,自动删除Cookie数据。如果为Cookie设置了到期时间,浏览器将会记住Cookie数据,即使用户重启计算机,只要没到期,再访问网站时也会有效果。



删除Cookie
当Cookie被创建以后,如果没有设置它的失效时间,其Cookie文件会在关闭浏览器时被自动删除。那么如何在关闭浏览器之前删除呢,方法有两种
1:应用setcookie()函数删除Cookie
删除cookie和创建cookie的方法基本类似,删除Cookie也使用setcookie()函数。删除Cookie只需要将setcookie()的第二个参数设置为空值,第三个参数将Cookie的过期时间设置为小于系统当前时间即可。
例如:
setcookie("name","",time()-1)
注:
把过期时间设置为0,可以直接删除cookie。
2:应用浏览器在选项或者设置中,直接删除相应的cookie



注意事项总结
(1)在应用setcookie()函数创建Cookie之前,不能有任何HTML输出,即使是空格、空行也不行,否则会产生错误代码。
(2)通过setcookie()函数创建Cookie后,在当前页应用echo $_COOKIE["name"]不会有任何输出。必须是在刷新后或者到达下一个页面时才可以看到Cookie值。因为setcookie()函数执行后,会向客户端发送一个Cookie,如果不刷新或者浏览下一个页面,客户端就不能将Cookie返回。
(3)使用Cookie的限制。如果Cookie不设定过期时间,那么它的生命周期为浏览器会话的期间,只要关闭浏览器,cookie就会消失。这种cookie被称为会话cookie,一般不保存在硬盘上,而是保存在内存中。
如果设置了过期时间,那么浏览器就会把cookie存到硬盘中,再次打开浏览器依然有效,知道它的有效期超时。
cookie在浏览器中有数量和大小的限制,一般最多为30个,并且每个cookie的容量不能超过4kb,每个web站点能设置的cookie总数不能超过20个。
(4)cookie是保存在客户端的,如果用户禁用了cookie,那么cookie也就失去了作用。因为浏览器会拦截cookie。




5 0