【问题标题】:Cant set a cookie from a wordpress plugin on a specific site无法从特定网站上的 wordpress 插件设置 cookie
【发布时间】:2020-07-25 04:27:01
【问题描述】:

我的 wordpress 插件设置了一个类似的 cookie:

setcookie($key,json_encode($something),0,'/');

这通常有效,但不适用于特定用户的网站。 在setcookie() 调用之后立即执行var_dump($_COOKIES); 表明相关cookie 存在于数组中,但响应标头中没有setcookie。应该由我的插件设置的网站公共端(不是管理仪表板)上设置的其他 cookie 也不起作用。

用户安装了缓存插件,但即使页面请求根本没有命中任何缓存,这个问题仍然存在。

从活动主题中的functions.php 文件设置测试cookie 有效。

什么可能导致问题,有什么可能的解决方案或进一步调试的方法?

【问题讨论】:

    标签: php wordpress cookies setcookie


    【解决方案1】:

    站点中其他地方的代码(例如functions.php 或wordpress 核心)可能会在响应返回浏览器之前修改标头。

    尝试设置cookie,然后dump cookie,然后死掉,然后查看浏览器响应头:

    setcookie($key,json_encode($something),0,'/');
    var_dump($_COOKIES);
    die();
    

    如果它按预期工作,您可以在代码执行中进一步移动die(); 部分,直到找到冲突的代码。

    否则,在 php 开发中更好的方法是在 JetBrains IDE 中使用 PHP Exception 断点,您可以在其中添加断点,并且在每个断点处您都可以看到 php 超全局变量,例如 $_COOKIE

    【讨论】:

    • 我还认为 cookie 可能正在被修改,但有趣的是,在 setcookie 调用之后 die()ing 也没有设置 cookie。还能是什么?
    • 另外,由于问题发生在我的插件用户的网站上,我无法将我的 IDE 连接到它或使用调试工具
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2018-11-15
    • 1970-01-01
    • 2021-10-07
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多