在wordpress网站上setcookie的问题

时间:2012-10-04 06:00:57

标签: php wordpress setcookie

起初我将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的顶部,但仍然是相同的结果;他们都回归真实吗?

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

谢谢, 艾萨克

编辑:刚试过把它放在init钩子之前,它返回false。然后我把setcookie功能放在那里,但仍然没有运气。

编辑2:结束添加:

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

add_action('init', 'set_user_cookie');

现在它完美无缺。

1 个答案:

答案 0 :(得分: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";
}