我一直在努力正确地管理我正在使用PHP编写的在线订购系统中的会话。我已经按照我的预期运行它,我允许用户在进程中点击“返回”按钮,而不会搞砸数据库。
我唯一想做的就是阻止在最后的“全部完成”屏幕上(或之后)使用“后退”按钮。
在第3步(确认并继续)和第4步(全部完成)中,我已经包含了以下几行:
session_cache_limiter('nocache');
session_start();
这在IE中完美运行 - 您会看到确认订单的页面,但如果您尝试“返回”,则会收到警告。如果您从网站导航,则同样适用 - 您无法看到最后一步。
同样的网站似乎在Safari(5.1.2)中不起作用。我可以点击“返回”并查看显示的所有内容(它是从本地缓存获取的,而不是服务器)。
该网站不接受重复输入,因此这不是一个大问题,但它不是我想要的功能。有谁知道如何在Safari中使用它?
答案 0 :(得分:1)
我不认为问题是代码,而是浏览器的行为。 在Safari中,当您按下后退按钮时,它只会将您带到之前的同一页面,就像您在另一个选项卡中打开新页面然后将其关闭一样,即使您将缓存设置为“无缓存”。相反,在Internet Explorer中,当您向后按时,它会通过指向其网址并再次加载来转到上一页。
在这里和那里阅读,似乎没有办法避免这种行为,除了一个小技巧,它会强制浏览器在你按下时重新加载页面:Preventing cache on back-button in Safari 5。