认为这很容易,但我花了最后半个小时试图找出它无济于事。未在PHP中设置饼干
$unique_id = uniqid(microtime(),1);
if (is_null($_COOKIE['client_id']))
{
setcookie("client_id", $unique_id);
}
但是,当我去到$ _COOKIE检查Cookie [ 'CLIENT_ID'],我得到一个空值。任何想法是怎么回事?
认为这很容易,但我花了最后半个小时试图找出它无济于事。未在PHP中设置饼干
$unique_id = uniqid(microtime(),1);
if (is_null($_COOKIE['client_id']))
{
setcookie("client_id", $unique_id);
}
但是,当我去到$ _COOKIE检查Cookie [ 'CLIENT_ID'],我得到一个空值。任何想法是怎么回事?
_COOKIE数组是在脚本初始化时创建的,然后由PHP独立完成。在脚本中设置cookie不会奇迹般地将其添加到$ _COOKIE中。它只会显示在下一个脚本请求上,或者您手动将其分配到$ _COOKIE中。
必须在输出任何东西之前设置Cookie。我之前也有过许多Cookie问题。
此外,请参阅Can't set cookies in PHP?以解释为什么您不能在设置它的同时检查其存在。
是的FallingBullets有权利。在使用UTF8文件编码时要担心 - 首先发送给客户端的字符是UTF8文件头(0xFF 0xBB 0xBF)。在这种情况下,ob-start http://php.net/manual/en/function.ob-start.php不起作用(在ob-start之前发送UTF8文件头)。
我描述的可能是Web服务器的特点。尝试保存ascii编码中的jour脚本。
你应该设定
$_COOKIE['key'] = 'value';
出于好奇的cookie,你检查在同一个请求或一个不同的cookie值? – riwalk 2010-07-01 20:39:40
同样的要求,这是否重要? – JoeCortopassi 2010-07-01 20:43:29
请参阅http://stackoverflow.com/questions/2444635/cant-set-cookies-in-php/2444671#2444671(和/或我编辑的答案)为什么它很重要。 – fbstj 2010-07-01 20:50:48