在我的站点中,我使用变量$location来跟踪用户正在查看的页面。在 index.php 的末尾,变量被复制到$_SESSION数组中,这样在下一个请求时我就知道用户上次在哪里(我用它来生成“返回”链接)。所以index.php大致是这样的:
$位置 = 获取位置();// 通过处理 $_POST 和 $_GET 获取用户位置
if(!isset($_SESSION['last_location'])) $_SESSION['last_location'] = SomeMeaningfulLocation();
.
.
输出页();// 根据 $location 呈现页面
。
.
$_SESSION['last_location'] = $location;
所以在 OutputPage() 中,$_SESSION['last_location'] 变量可用于生成“返回”链接。问题是:此代码与 MSIE、Chrome 和 Safari 完美配合。但是,它不适用于 Firefox 或 SeaMonkey(我喜欢将其用于 Web 开发)。在这些浏览器中,“后退”链接总是指向首页。
其他可能有用的事实:
- 会话数据存储在文件中,服务器日期和时间设置正确
- 我已经尝试过使用缓存设置(header('Cache-control: ...')等)没有区别
- 我尝试在 Firefox/Seamonkey 配置中禁用network.prefetch-next (没有区别)
- 该
SomeMeaningfulLocation()
函数不返回首页位置 - 因此消除会话被“忘记”并在每个请求时重新初始化的可能性 - 这也被排除在... - ...其他会话变量工作得很好(但这个不同之处在于它的内容会在每次请求时自动更新)
- 在 apache 访问/错误日志中看不到任何错误(与其他浏览器相同)
- 当我在分配后检查 $_SESSION['last_location'] 值时(在index.php的最后),它具有正确的值。当我在index.php的开头检查它时,它已经被首页的位置覆盖(我重复一遍:仅在 Mozilla 中。在其他浏览器中,这些检查显示正确的预期值!)
在此先感谢,我没有想法:-)