Cookie的基本概念及设置
2017-10-20 07:41
267 查看
在PHP中可以使用setcookie()或setrawcookie()函数设置Cookiie
第一个参数是必选参数,其值是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转码。
由PHP在当前页设置的Cookie不能立即生效,要等到下一个页面才能看到。这是由于设置的这个页面里的Cookie有服务器传递个客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器。如果是JavaScript设置的,是立即生效的。
Cookie没有删除函数。如果想删除Cookie,应该讲Cookie的expire设置为过期时间,如1小时前、1970年等,这会自动触发浏览器的删除机制。
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年等,这会自动触发浏览器的删除机制。
相关文章推荐
- 第1章 Java基本概念及环境配置——FAQ1.14 JDK安装时设置PATH和CLASSPATH环境变量有何作用?
- javaweb cookie基本操作 以及过期时间设置无效问题解决
- Cookie学习笔记一:基本概念
- 【转贴】Managing paths-关于各种JBuilder的path,文件结构,设置的意义等基本概念
- VLAN(基本概念和设置)
- Java基本概念-session和cookie
- cookie和session的基本概念和特性
- DB2日志基本概念及归档日志模式设置
- ActiveMQ的基本概念与设置
- MPLS基本概念、设置和效验
- CentOS7日期时间设置方法以及时间基本概念介绍
- js设置 获取 删除cookie等基本实例
- jquery.cookie() jQuery Cookie的基本使用及保存路径以及设置全局cookie
- linux时钟基本概念、CST与UTC、以及NTP简单设置
- LX5设置拍摄基本技巧、入手注意事项与摄影基本术语的概念
- [04] Cookie概念和基本使用
- 《Unity預計算即時GI》笔记:一、基本概念与一些设置
- 【计算机网络学习笔记】什么是cookie以及cookie劫持的基本概念
- day10 反射创建数组 线程的基本概念 线程的编写和启动方式 线程的运行状态以及状态转换方法 线程的调度和优先级设置
- pyqt4 基本窗口,窗口布局,设置logo,窗口最大最小化