PHP $ _SESSION覆盖 - 仅限Firefox(Mozilla)

时间:2013-03-18 13:07:11

标签: php session firefox

在我的网站中,我使用变量 $ location 来跟踪用户正在查看的页面。在index.php的末尾,变量被复制到 $ _ SESSION 数组中,以便在下一个请求时我知道用户上次的位置(我用它来生成“返回”链接) 。所以 index.php 大致如下:

  

$ location = GetLocation(); //通过处理$ _POST和$ _GET来获取用户位置   if(!isset($ _ SESSION ['last_location']))$ _SESSION ['last_location'] = SomeMeaningfulLocation();
  。
  。
  OutputPage(); //根据$ location
呈现页面   。
  。
  $ _SESSION ['last_location'] = $ location;

因此在OutputPage()中,$ _SESSION ['last_location']变量可用于生成“后退”链接。 问题是:此代码与MSIE,Chrome和Safari 完美配合。但是,它不适用于Firefox,也不适用于SeaMonkey(我喜欢用于Web开发)。 在这些浏览器中,“后退”链接始终指向首页

其他可能有用的事实:

  • 会话数据存储在文件中,服务器日期和时间设置正确
  • 我已经尝试过使用缓存设置(标题('缓存控制:...')等),没有任何区别
  • 我尝试在Firefox / Seamonkey配置中禁用 network.prefetch-next (没有区别)
  • SomeMeaningfulLocation()函数不返回首页位置 - 因此,为了消除会话被“遗忘”并在每次请求时重新初始化的可能性 - 这也被排除在......
  • 之外
  • ...其他会话变量工作正常(但不同之处在于其内容会在每次请求时自动更新)
  • 在apache访问/错误日志中看不到任何错误(它与其他浏览器一样)
  • 当我在赋值之后检查$ _SESSION ['last_location']值时(在 index.php 的最后),它具有正确的值。当我在 index.php 的最开头检查它时,它已被覆盖了首页的位置(我重复一遍:仅在Mozilla中。在其他浏览器中,这些检查显示正确的预期值!)

在此先感谢,我没有想法: - )

0 个答案:

没有答案