64、PHP操作COOKIE缓冲区影响COOKIE传递方式

阅读() @2018-10-29 18:16:07

1、什么是cookie?

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

每个浏览器都有存储cookie的功能,只要用户允许浏览器存储服务端设置的cookie,一般情况下,每个cookie文件最大是4kb,每个浏览器最多存储50个cookie文件,当cookie文件数量达到最大50个时,并且用户还在继续浏览网页,后续还有更多的cookie需要存储,那么浏览器就会随机的删除目前已有的cookie文件或者是删除不经常用的cookie文件,以此来存储新的cookie。

cookie的建立十分简单,只要用户的浏览器支持cookie功能,就可以用PHP内建的函数setcookie()来建立一个新的cookie,cookie是http标头的一部分,因此在一般情况下,setcookie()必须在其他信息输出到浏览器前调用,否则会报错,所以即使是空格或空行,都不要在调用setcookie函数之前输出,这个和调用header()函数的限制类似。

注意,这里只是说【一般情况下】,setcookie()函数必须写在最前面。

2、如何设置cookie?

setcookie()函数的语法格式如下:

setcookie()函数定义一个和其余的http标头一起发送的cookie,它的所有参数是对应http标头cookie资料的属性。虽然setcookie()函数的参数设置有很多,但是除了name,其他都是非必需的,我们经常使用的也只有前3个参数,每个参数的具体意义如下图:

setcookie($name,$value,$expire,$path,$domain,$secure)

1、$name:cookie名称;

2、$value:cookie值;

3、$expire:cookie有效期限,一般设置为time()+有效秒数,如果设置为0,那么浏览器关闭的时候,之前cookie就会自动清除;

4、$path:有效路径,如果不设置的话,只能读取本文件夹下的cookie,它的上级文件夹或者是同级文件夹下的cookie是读取不到的;

5、$domain:指定此cookie所属服务器的网址名称,预设是建立此cookie服务器的网址;

6、$secure:指明cookie是否仅通过安全的https链接传送中的cookie的安全识别常熟,如果设定此值,则代表只有在某种情况下,cookie才能在客户端与服务端之间传递。当设置为true时,cookie仅在安全的连接中被设置,默认是false。

我们经常设置的cookie代码如下:

setcookie('weburl','http://www.zymseo.com',time()+3600,'/','zymseo.com',true);

a页面设置了cookie,在b页面获取的时候,代码如下:

$_COOKIE['cookie名称'];

上面提到,setcookie()必须放在所有输出代码的前面,这个不是非常准确,因为我们通过一些设置,即使setcookie()函数放在输出代码的后面,也不会报错,有2种方法:

1、在php.ini文件中,设置output_buffering的值为On,这样的话,程序执行的时候会把所有的输出代码先放到缓冲区,等到setcookie()函数执行之后,才会释放并一并执行缓冲区的代码。

2、在输出代码的前面加上ob_start()函数,这样也不会报错!

相关推荐:

JavaScript设置、读取、删除cookie的方法详解

微信二维码
锐壳主机