Cookie的基本概念及设置

在PHP中可以使用setcookie()或setrawcookie()函数设置Cookiie

COOKIE使用

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )


参数介绍

第一个参数是必选参数,其值是Cookie的名称,即_COOKIE这个全局数组的键值。


第二个参数用来设置Cookie的值。参数为空时,Cookie值为空。由于把Cookie的值设为false会使客户端尝试删除这个Cookie,所以要在Cookie上保存true或false,不应该直接使用boolean值,而应该用0表示false,用1表示true。只要愿意,用A表示false,B表示true也是可以的。


第三个参数用来设置有效时间,以秒为单位。这个值很重要,决定了Cookie的存储方式,后面会详细讲到。


第四个参数用来设置Cookie的有效目录,默认为"/",即整个域名下有效,如果有需要,可以设置仅在某目录下有效。


第五个参数用来设置Cookie的作用域名,默认在本域名下。需要注意的是,在IE下,包括点号长度小于等于5的短域名如果带了domain参数,会导致Cookie设置失败。


第六个参数用来设置是否对Cookie进行加密传输,默认为false。如果设置为true,只要使用HTTPS,这个Cookie才会被设置。所以,通常情况下不设置此参数或使用默认值false。


第七个参数表示是否只是用HTTP访问Cookie.如果为1或者true,客户端的JavaScript就无法操作这个Cookie.使用此参数可以减少XSS攻击的风险,但注意,不是所有的浏览器都支持这个参数。此参数只在PHP5.2.0以上版本有效。(再次强调,Cookie和PHP没有任何关系,只和浏览器相关,PHP只负责跟客户端打招呼,具体的管理有客户端全程完成。)


[说明]setrawcookie的功能和参数与setcookie基本一样,唯一区别是setrawcookie不会对Cookie中的value进行urlencode转码。


设置Cookie时需要注意以下几点:

这两个函数有一个返回值,如果是false,代表设置失败;如果为true,代表设置成功。但是这个返回值仅供参考,不代表客户端一定能接收到。
由PHP在当前页设置的Cookie不能立即生效,要等到下一个页面才能看到。这是由于设置的这个页面里的Cookie有服务器传递个客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器。如果是JavaScript设置的,是立即生效的。

Cookie没有删除函数。如果想删除Cookie,应该讲Cookie的expire设置为过期时间,如1小时前、1970年等,这会自动触发浏览器的删除机制。

Cookie的基本概念及设置_第1张图片

你可能感兴趣的:(❤『会话控制』)