Php wordpress站点上的setcookie问题
起初,我的Php wordpress站点上的setcookie问题,php,wordpress,setcookie,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
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)
首先是我的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');
现在它工作得很好 要调试这种情况,应首先启用正确的错误报告(不要在生产环境中使用): 如果随后调用
setcookie()
,它将发出警告,告诉您输出从何处开始
如果您不能做到这一点,您可以通过以下方式使用headers\u sent()
来确定输出从何处开始:
if (headers_sent($file, $line)) {
echo "Output started in $file on line $line\n";
}
在我的本地网站上对我有效…你的cookie设置关闭了吗?嗯,这很奇怪,不是。谢谢你的建议。我最终让它工作了,见编辑2。
error_reporting(-1);
ini_set('display_errors', 'On');
if (headers_sent($file, $line)) {
echo "Output started in $file on line $line\n";
}