认为这非常简单,但我花了半个小时试图弄清楚无济于事。
$unique_id = uniqid(microtime(),1);
if (is_null($_COOKIE['client_id']))
{
setcookie("client_id", $unique_id);
}
但是当我通过$ _COOKIE ['client_id']检查cookie时,我得到一个空值。有什么想法吗?
答案 0 :(得分:8)
必须在输出任何内容之前设置Cookie。我之前也遇到过很多关于cookies的问题。
此外,请参阅Can't set cookies in PHP?,了解为何无法在设置时检查其存在。
答案 1 :(得分:3)
_COOKIE数组是在脚本初始化时创建的,然后由PHP单独保留。在脚本中设置cookie不会神奇地将其添加到$ _COOKIE。它只会出现在下一个脚本请求中,或者您手动将其分配到$ _COOKIE。
答案 2 :(得分:2)
您应该使用
设置Cookie$_COOKIE['key'] = 'value';
答案 3 :(得分:1)
是的FallingBullets是对的。使用UTF8文件编码时要小心 - 发送到客户端的第一个字符是UTF8文件头(ď»ð0xEF0xBB 0xBF)。在这种情况下,ob-start http://php.net/manual/en/function.ob-start.php不起作用(在ob-start之前发送UTF8文件头)。
我所描述的可能是Web服务器的特征。尝试使用ascii编码保存jour脚本。