2010-07-01 56 views
0

认为这很容易,但我花了最后半个小时试图找出它无济于事。未在PHP中设置饼干

$unique_id = uniqid(microtime(),1); 

if (is_null($_COOKIE['client_id'])) 
    { 
    setcookie("client_id", $unique_id); 
    } 

但是,当我去到$ _COOKIE检查Cookie [ 'CLIENT_ID'],我得到一个空值。任何想法是怎么回事?

+2

出于好奇的cookie,你检查在同一个请求或一个不同的cookie值? – riwalk 2010-07-01 20:39:40

+0

同样的要求,这是否重要? – JoeCortopassi 2010-07-01 20:43:29

+1

请参阅http://stackoverflow.com/questions/2444635/cant-set-cookies-in-php/2444671#2444671(和/或我编辑的答案)为什么它很重要。 – fbstj 2010-07-01 20:50:48

回答

3

_COOKIE数组是在脚本初始化时创建的,然后由PHP独立完成。在脚本中设置cookie不会奇迹般地将其添加到$ _COOKIE中。它只会显示在下一个脚本请求上,或者您手动将其分配到$ _COOKIE中。

8

必须在输出任何东西之前设置Cookie。我之前也有过许多Cookie问题。

此外,请参阅Can't set cookies in PHP?以解释为什么您不能在设置它的同时检查其存在。

1

是的FallingBullets有权利。在使用UTF8文件编码时要担心 - 首先发送给客户端的字符是UTF8文件头(0xFF 0xBB 0xBF)。在这种情况下,ob-start http://php.net/manual/en/function.ob-start.php不起作用(在ob-start之前发送UTF8文件头)。

我描述的可能是Web服务器的特点。尝试保存ascii编码中的jour脚本。

2

你应该设定

$_COOKIE['key'] = 'value';