Cookie没有在PHP中设置

时间:2010-07-01 20:37:31

标签: php cookies

认为这非常简单,但我花了半个小时试图弄清楚无济于事。

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

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

但是当我通过$ _COOKIE ['client_id']检查cookie时,我得到一个空值。有什么想法吗?

4 个答案:

答案 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脚本。