PHP中cookie的设置与读取

zxh5566  2016-08-27 08:13   Hits: 

Cookie的建立十分简单,只要用户的浏览器支持Cookie功能,就可以使用PHP内建的setCookie()函数来新建立一个Cookie,

Cookie是HTTP标头的一部分,因此setCookie()函数必须在其他信息被输出到浏览器前调用,所以即使是空格或空行都不要在

调用setCookie()之前输出,这和调用header()函数的限制类似,setCookie()函数定义一个和其余的HTTP标头一起发送的

Cookie,它的所有参数是对应的HTTP标头Cookie资料的属性,虽然setCookie()函数的导入参数看起来不少,但除了参数name

之外,其他都是非必须的,而我们经常使用的只有前三个参数。

如果只有name这个参数,则原有此名称的Cookie选项将被删除,你可以使用空字符串来略过此参数,参数expire和secure是

个整数,可以使用0来略过,而不是使用空字符,但参数expire是一个正规的unix时间戳,由time()或mktime()函数传回,参

数secure指出此Cookie将只有在安全的HTTPS连接时传送,在实际建立Cookie时通常仅使用前三个参数

<?php
setcookie('username','skygao',time()+60*60*24);
?>

如果访问该脚本就会设置Cookie,并把用户名添加到访问者电脑的Cookie中去,上例表示建立一个识别名称为username的

Cookie,其内容值为字符串skygao,而在客户端有效的存储期限则指定一周,如果其他三个参数也需要使用,可以如下设定

<?php

setcookie('username','skygao',time()+60*60*24*7,'/test','example.com',1);

?>

上例中,参数/test表示Cookie只有在服务器的这个目录或子目录中有效,参数.example.com使Cookie能在如example.com域

名下的所有子域名中有效,虽然.并不必须的,但加上会兼容更多的浏览,当最后一个参数设为1时候,则Cookie仅在安全的

连接中才能被设置,如果需要向客户端设置多个Cookie,可以通过调用多次setCookie函数实现,但如果两次设置相同的

Cookie名称,则后面的会替换前面的。

如果Cookie设置成功,客户端就拥有了Cookie文件,用来保存web服务器为其设置的用户信息,假设我们在客户端使用

windows系统去浏览服务器中的脚本,Cookie文件会被存放在"c:\documents and setting\用户名\cookies"文件夹下,

Cookie是一个以普通文件文本形式记录信息的,虽然直接使用文本编辑器就可以打开,但直接浏览没有意义,而是当客户再

次访问该网站时,,浏览器会自动把与该站点对应的Cookie信息全部发回给服务器,从PHP5以后,任何从客户端发送过来的

Cookie信息,都被自动保存在$_COOKIE数组中,所以在每个PHP脚本中都可以从该数组中读取相应的Cookie,$_COOKIE全局数

组存储所有通过HTTP传递的Cookie资料,并以Cookie的识别名称为索引。

在设置Cookie的脚本中,第一次读取它的信息并不会生效,必须刷新或到下一个页面才可看到,因为Cookie要先被设置到客

户端,再次访问时才能被发送回来,这时才能被获取,所以要用print_r($_COOKIE)指令来调试现有的Cookie

<?php print_r($_COOKIE) ?>

如果使用Cookie中的单个信息,可以在$_COOKIE中通过Cookie标识进行访问,如果Cookie中的信息需要批量处理,也可以通

过数组遍历的方式对其进行处理。

上一篇:详解PHP文件上传
下一篇:PHP的Session详解