起初我将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');
现在它完美无缺。
答案 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";
}