php setcookie之后不会立即生效,来看看cookie生成的过程吧;)
先看一段简单代码:
<?php
$name="asdf";
setcookie('name',$name,time()+3600,'/');
echo $_COOKIE['name'];
服务器端php在setcookie后,会在http response header里面加上set-cookie项,
Set-Cookie:name=asdf; expires=Wed, 21-May-2014 11:05:34 GMT; path=/
这是要告诉浏览器让它保存到本地相应位置(不同浏览器保存的位置和方式不同),
然后当浏览器访问相同服务器的时候,会在request header里面加上cookie项,
Cookie:name=asdf
所以浏览器再第一次访问该php的时候读不到 $_COOKIE['name'] 的值,刷新以后服务器端才能拿到‘name’。
另外一种设置cookie的方式是 header("Set-Cookie:name2=1234"); 同样也要刷新或跳转一次才会生效。
看到百度文库里面有一篇很强大的介绍cookie的文章,cookie 详解,好好学习天天向上!
setcookie参数:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
相关好文:
cookie的作用域是domain本身以及domain下的所有子域名(参数为空时默认当前域名)。click
对匹配发送规则的多个同名cookie,浏览器会全部随request header 发送过去,而且木有优先级??。click 服务器要读取哪个呢?