【问题标题】:Session Variables not working firefox and Wordpress会话变量不工作 Firefox 和 Wordpress
【发布时间】:2012-10-18 10:11:42
【问题描述】:

好吧,这是绝望,我已经尝试了所有我能找到的修复方法,但没有运气。 我在 wordpress 中使用会话变量,它在除 Firefox 之外的所有浏览器中都能正常工作。我已经清除了缓存、cookies、以安全模式启动等,但没有任何乐趣。启用了 Cookie,我也在不同的电脑上尝试过。

我在我的主题函数文件中启动会话,如下所示:

function myStartSession() {
if(!session_id()) {
    session_start();
 }
}
add_action('init', 'myStartSession', 1);

然后在我的个人页面模板上创建会话变量,如下所示: $_SESSION['hq'] = 1;

我可以确认 sessionid 在每个浏览器中都保持不变并且工作正常,包括 Firefox,但是在 FF 中,会话变量没有正确地从一个页面传递到另一个页面,结果是不可预测的。

非常欢迎任何解决方案/建议。

【问题讨论】:

    标签: wordpress session-variables


    【解决方案1】:

    不是一个全新的问题,但由于我一直在寻找解决方案并来到这里,我会回答它以帮助其他程序员。

    我在开发的 WordPress 主题中遇到了类似的问题,我在 StackExchange 的这篇文章中找到了解决方案:https://wordpress.stackexchange.com/questions/40271/2-different-post-ids-for-single-page-load-only-in-firefox

    由于 Firefox 的预取,下一篇文章/页面在后台加载,会话受此行为影响。

    至少有两种可能的解决方案来解决这个问题:

    1. 使用以下函数调用删除在页面<head> 中插入下一页/帖子的操作:

      remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
      

      它可以添加到您主题的functions.php 文件中。

    2. 检查请求标头以处理(或忽略)预取。所有的预取请求都带有一个特殊的 header 发送到服务器,如下:

      X-moz: prefetch
      

      您可以查找此标头并以不同的方式处理请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2014-04-08
      • 2015-06-29
      相关资源
      最近更新 更多