我正在尝试检索使用setcookie()设置的cookie。这些是会话cookie,设置为域站点的根。
经过大量测试,这个问题已经归结为wordpress正在运行的某个服务器。它在我的本地甚至在托管的开发服务器上都能工作,但在生产服务器上它无法读取cookie。
目前cookie设置为:
setcookie("visited", "true", mktime(23,59,59,12,31,2015), "/");
我也试过使用
setcookie("visited", "true", mktime(23,59,59,12,31,2015), "/", ".mydomain.com");
正如其他论坛所提到的那样,使其更容易访问。
我曾经在用php设置和获取cookie的header.php文件中运行过这段代码,然后在发现wordpress会破坏头部后将其移到functions.php,这可能会把事情搞砸。这仍然没有解决问题。
有什么建议吗?
如果您使用的是WP引擎,那么$_COOKIE
很可能是一个空数组,因为它们的缓存系统。缓存的一个例外是具有包含wordpress_
的cookie的页面。
您可以通过在该页面上创建一个前缀为wordpress_
的cookie来利用这个漏洞,瞧,$_COOKIE
将被填充。
JavaScriptdocument.cookie = "wordpress_dummy=dummy; max-age=" + 60*60*24*99
PHPsetcookie('wordpress_dummy', 'dummy', strtotime('+99 days'));
顺便说一下,只在需要的页面上使用它。否则,您的网站将大大减慢速度,因为不会缓存任何内容。还要负责任地设置cookie过期时间。