【问题标题】:Issues with setcookie on wordpress sitewordpress 网站上的 setcookie 问题
【发布时间】:2012-10-04 06:00:57
【问题描述】:

一开始我的setcookie() 是:

$school = "Some Value";
setcookie("default_school", $school, time()+3600);
var_dump($_COOKIE);

这样不行,所以我搜索了一下,发现我可能只是需要设置一个路径,所以我把它改成:

$school = "Some Value";
setcookie("default_school", $school, time()+3600, "/", ".mydomain.com");
var_dump($_COOKIE);

那仍然没有用,所以我做了更多调查,并确定我的问题一定是我设置 cookie 太晚了。因此,我开始检查我的标头是否设置在我的代码的某些部分中,这需要返回 bool(false)

var_dump(headers_sent());

首先是我的index.php 的顶部,然后是我的header.php 的顶部,但结果仍然相同;他们都返回true?

我觉得这应该如此简单,但我无处可去。非常感谢您朝着正确的方向前进。

谢谢, 艾萨克

编辑:刚刚尝试将它放在 init 钩子之前,它返回 false。然后我把 setcookie 函数放在那里,仍然没有运气。

编辑 2:最终添加:

function set_user_cookie() {
    $school = "Some Value";
    setcookie('default_school', $school, time()+3600);
}

add_action('init', 'set_user_cookie');

现在它可以完美运行了。

【问题讨论】:

  • 在我的本地为我工作...你的 cookie 设置关闭了吗?
  • 嗯,这很奇怪,其实不然。

标签: php wordpress setcookie


【解决方案1】:

要调试这种情况,您应该从启用正确的错误报告开始(不要在生产环境中使用):

error_reporting(-1);
ini_set('display_errors', 'On');

如果您随后调用setcookie(),它将发出警告,告诉您输出从哪里开始。

如果你不能这样做,你也可以通过这种方式使用headers_sent() 来确定输出的开始位置:

if (headers_sent($file, $line)) {
    echo "Output started in $file on line $line\n";
}

【讨论】:

  • 感谢您的建议。我最终让它工作了,见 EDIT 2.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2013-05-20
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
相关资源
最近更新 更多