一,解释
Cookie 在远程浏览器端储存数据并以此跟踪和识别用户的机制;浏览器(即客户端)通过HTTP协议和服务器端进行Cookie交互;
PHP发出命令让浏览器设置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只负责跟客户端打招呼,具体的管理有客户端全程完成。)
设置Cookie时需要注意以下几点:
这两个函数有一个返回值,如果是false,代表设置失败;如果为true,代表设置成功。但是这个返回值仅供参考,不代表客户端一定能接收到。
由PHP在当前页设置的Cookie不能立即生效,要等到下一个页面才能看到。这是由于设置的这个页面里的Cookie有服务器传递个客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器。如果是JavaScript设置的,是立即生效的。
Cookie没有删除函数。如果想删除Cookie,应该讲Cookie的expire设置为过期时间,如1小时前、1970年等,这会自动触发浏览器的删除机制。
三。实际应用 进行登录控制,记住用户,记住密码免登录,防止刷票!等;
IE8 一个域名下可以放50个cookie
FIREFOX 一个域名可以放150个COOKIE
四,保存位置
1.保存在文件中; 2.保存在浏览器的内存中;
五,COOKIE跨域与P3P协议
实例:单点登录;看文章:
网友评论