会话变量不适用于firefox和Wordpress

时间:2012-08-07 17:30:26

标签: wordpress session-variables

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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
    

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