我在主题函数文件中启动会话,如下所示:
function myStartSession() {
if(!session_id()) {
session_start();
}
}
add_action('init', 'myStartSession', 1);
然后在我的个人页面模板上,我创建会话变量,如下所示: $ _SESSION ['hq'] = 1;
我可以确认sessionid在每个浏览器中保持不变并且正常工作包括Firefox,但是在FF中,会话变量没有正确地从一个页面传递到另一个页面,结果是不可预测的。
非常欢迎任何解决方案/建议。
答案 0 :(得分:3)
这不是一个全新的问题,但由于我正在寻找解决方案而已到此处,我会回答它可能会帮助其他程序员。
我在开发的WordPress主题中遇到了类似的问题,我在StackExchange的这篇文章中找到了一个解决方案:https://wordpress.stackexchange.com/questions/40271/2-different-post-ids-for-single-page-load-only-in-firefox
由于Firefox的预取,下一个帖子/页面会在后台加载,会话会受到此行为的影响。
至少有两种可能的解决方案可以解决这个问题:
使用以下函数调用删除在页面<head>
中插入下一页/帖子的操作:
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
可以将其添加到主题的functions.php
文件中。
检查请求标头以处理(或可能忽略)预取。所有预取请求都使用特殊标头发送到服务器,如下所示:
X-moz: prefetch
您可以查找此标头并以明确的方式处理请求。