2

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

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

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

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

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

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

4

1 回答 1

3

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

我开发的 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. 检查请求标头以处理(或忽略)预取。所有预取请求都使用特殊的标头发送到服务器,如下所示:

    X-moz: prefetch
    

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

于 2012-10-18T02:11:42.003 回答