仅当访问者登录时检测到Cookie

时间:2018-12-27 作者:re-boot

这是我第一次玩cookies,所以如果这个问题是“愚蠢的”,我很抱歉,但我没有在这个网站的其他地方找到答案。

Iv\'e set a cookie using this code in my child theme functions.php file:

<?php
$_fa = \'friend\';

if(!isset($_COOKIE[\'myCookie\'])) {

// set a cookie for 1 year
setcookie(\'myCookie\', $_fa, time()+31556926, "/");

$_COOKIE[\'myCookie\'] = $_fa;

}
}
?>
cookie设置在站点范围内,具有正确的值,我可以通过手动查看cookie来访问chrome中的cookie及其信息。

The problem is:

如果我在登录时浏览网站,则依赖于cookie的功能会平稳运行,如中所示,它们会设法获取cookie名称和值以执行不同的任务。

但是,当我以随机访问者的身份注销并浏览网站时,没有任何功能启动,因为它们根本检测不到cookie名称或值。

I also ran a test to confirm, with this code:

<?php
if(!isset($_COOKIE[\'myCookie\'])) {
echo "Ooops! Cookie not found!";
} else {
echo \'Hello \' . htmlspecialchars($_COOKIE["myCookie"]) . \'!\';
}
?>

This returns:

<哎哟!找不到Cookie当我作为随机访问者浏览时,“未登录”。

And

<你好,朋友当我以WP用户身份登录时进行浏览。

这发生在网站的每个页面以及Chrome、Edge和Firefox中(这些是我测试过的浏览器)

只是为了澄清一下,cookie总是在浏览器中。当我注销或诸如此类的东西时,它不会被删除。只是在我浏览站点时,没有任何函数或语句检测到cookie,而我没有登录。

在我的代码中,是什么造成了这种行为,我可以做些什么来解决这个问题?

1 个回复
最合适的回答,由SO网友:re-boot 整理而成

ANSWER TO MY OWN QUESTION

这是过去几天我一直在试着调试的东西。答案是通过错误找到的。

导致错误的原因是缓存。我必须将cookie从缓存中豁免,才能正常工作。

因此,如果您遇到这种行为并开始调试任务,您知道这会给您带来痛苦,请检查您的服务器设置或首先致电您的主机提供商。

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!