0

起初我有我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());

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

我觉得这应该很简单,而且我无处可去。朝着正确的方向推动将受到高度赞赏。

谢谢,艾萨克

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

编辑2:最终添加:

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

add_action('init', 'set_user_cookie');

现在它完美地工作了。

4

1 回答 1

0

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

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";
}
于 2012-10-04T06:32:47.427 回答