PHP session_cache_limiter在Safari中不起作用


PHP session_cache_limiter not working in Safari?

我一直在尝试正确管理我使用PHP编写的整个在线订购系统中的会话。我让它按我想要的方式运行,我允许用户在过程中点击"后退"按钮,而不会破坏数据库。

我唯一想做的就是防止在最后的"全部完成"屏幕上(或之后)使用"后退"按钮。

在步骤3(确认并继续)和步骤4(全部完成)中,我包含了以下行:

session_cache_limiter('nocache');
session_start();

这在IE中非常有效——你会看到确认订单的页面,但如果你试图反击,就会收到警告。如果你在网站上导航,也同样适用——你看不到最后一步。

同一个网站在Safari(5.1.2)中似乎不起作用。我可以点击"返回",查看显示的所有内容(它是从本地缓存而不是服务器获取的)。

该网站不接受重复输入,所以这不是一个大问题,但这不是我想要的功能。有人知道如何在Safari中实现这一点吗?

我认为问题不在于代码,而在于浏览器行为。在Safari中,当你按下后退按钮时,它会让你回到以前的页面,就像你在另一个选项卡中打开新页面然后关闭它一样,即使你将缓存设置为"无缓存"。相反,在Internet Explorer中,当你按下后退键时,它会指向上一页的url并再次加载,从而将你带到上一页。

阅读这里和那里,似乎没有办法避免这种行为,除了一个小技巧,它应该迫使浏览器在你按下后退时重新加载页面:在Safari 5中的后退按钮上防止缓存。