【问题标题】:cant retrieve any cookies with $_COOKIE wordpress无法使用 $COOKIE wordpress 检索任何 cookie
【发布时间】:2019-11-28 04:13:08
【问题描述】:

我正在尝试检索我使用 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 可能会搞砸。这仍然没有解决问题。

有什么建议吗?

【问题讨论】:

  • 服务器上是否启用了 Apache session_cookie_module
  • 请记住,如果您通过 PHP 设置 cookie,您应该在发送输出之前进行,因为 cookie 设置在标头中。
  • @mevius - 检查它已启用。
  • @SkarXa - 将其设置为在 'init' 挂钩上运行。
  • @Anand - 目前使用 $_COOKIE 来阅读它,它在我所有其他版本的网站上都可以正常工作,除了我的现场版本

标签: php wordpress cookies


【解决方案1】:

如果您使用的是 WP Engine,由于其缓存系统,$_COOKIE 很可能是一个空数组。缓存的一个例外是具有包含 wordpress_ 的 cookie 的页面。

您可以通过在该页面上创建一个前缀为 wordpress_ 的 cookie 来利用此漏洞,瞧,$_COOKIE 将被填充。

JavaScript document.cookie = "wordpress_dummy=dummy; max-age=" + 60*60*24*99

PHP setcookie('wordpress_dummy', 'dummy', strtotime('+99 days'));

顺便说一句,仅在需要它们的页面上使用它。否则,您的站点将大大减慢,因为不会缓存任何内容。还要负责任地设置 cookie 过期时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多