【问题标题】:PHP set cookie localhost not working [closed]PHP设置cookie localhost不起作用[关闭]
【发布时间】:2012-05-31 05:13:33
【问题描述】:

问题是我无法从 PHP 设置 cookie。 我试图用谷歌搜索这个问题并在stackoverflow上搜索,但是 没有一个解决方案有效。

我试过了:

setcookie('user_id', $row['user_id'], time() + ( 60 * 60 * 8), '/', '127.0.0.1');
setcookie('user_id', $row['user_id'], false, '/', false);
setcookie('user_id', $row['user_id'], time() + ( 60 * 60 * 8), '/', false);
setcookie('user_id', $row['user_id'], time() + ( 60 * 60 * 8), '/', '');

我使用的浏览器是 Apache 服务器上的 Firefox 12 和 Chrome 19。

感谢您的帮助。

编辑:当我获取数据放入我的 cookie 时,我的数据库似乎有问题, 所以没关系;)感谢您的宝贵时间!

【问题讨论】:

  • 你怎么知道它不起作用?
  • 您是否收到错误或您怎么知道它不起作用?
  • 您是否确保在这些命令之前没有输出。需要首先发送 HTTP 标头,其中包括任何输出,包括编码字符。 setcookie 将被忽略。最好的办法是使用 Firefox 的实时 HTTP 标头来查看发生了什么。
  • 我有一个标题('Location: ' ... );在此之后,它会成功重定向。我将尝试 HTTP 标头:)
  • 在我重定向并尝试使用 cookie 后,它没有设置。 isset 返回 false,如果 cookie 正常工作,则不会按预期工作。

标签: php cookies


【解决方案1】:

您确定在该代码之前没有输出吗? 所有echos 和所有includes 包括不完全是PHP 代码的东西 都被视为输出。

setcookie() 调用之前无法输出任何内容的原因很简单。要设置 cookie,服务器必须向浏览器发送标头指令。如果内容正文已打印出来,则无法发送该标头。

您可以更改代码以将调用放在任何输出之前,或者您可以简单地将ob_start() 放在代码的开头。该函数使 PHP 缓冲所有输出,并在脚本结束时仅发送一个。

【讨论】:

  • 我有一个标题('Location: ' ... );在此之后,它会成功重定向。
  • @kjelelokk 尝试将header() 调用之前 setcookie() 调用。
猜你喜欢
  • 2018-04-03
  • 2012-02-23
  • 2011-04-13
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 2020-08-01
  • 2016-05-12
  • 2013-09-18
相关资源
最近更新 更多