当我按下登录按钮时,它会删除cookie重定向到主页面。它运作得很好。
但是当我按下“后退”按钮(或退格键)时,登录页面仍会显示。出于隐私原因,我想阻止这种情况。
你会怎么做?
答案 0 :(得分:1)
看到这个问题/答案:
(PHP) How to destroy the session cookie correctly?
还有关于缓存控制的问题:
How to use HTTP cache headers with PHP
基本上,您需要确保正在执行的操作是适当地破坏PHP会话,并向浏览器发送正确的缓存指令(实质上,不是缓存)。
请注意我所链接的问题的答案,即如果你在服务器上销毁会话,那么cookie本身就没用了。不要依赖于被删除的cookie来结束会话。
答案 1 :(得分:0)
当然会的。刷新页面,您会发现cookie尚未重置。
您确定要正确取消PHP会话变量吗?
答案 2 :(得分:0)
您可以使用Expires标头(php将其与会话一起使用)。如果您在1970年发送了某些内容 expires 浏览器将不会缓存该页面,而是当有人使用历史记录功能时,它们会重新加载它。
从PHP手册:
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
但是,让我补充一点:没有什么可以提供100%的保护。如果用户想要安全会话,则所有浏览器都支持某些安全模式,在关闭窗口后,将删除该会话的所有历史记录和缓存信息。
答案 3 :(得分:0)
这可能取决于浏览器,而不是您的代码。您可以尝试使用 -
停止浏览器缓存页面<meta http-equiv="pragma" content="no-cache" />
答案 4 :(得分:0)
这似乎是一个缓存问题。配置应用程序以将防缓存标头发送到浏览器,以防止您的页面缓存在浏览器内存中。
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Expires: 0");
答案 5 :(得分:0)
当然,如果用户在注销后点击退格,他们实际上无法做任何事情,只需像登录一样查看页面。所有请求等都将失败。
或者,你可以让你的logout.php重定向到“很快见到你”或类似的页面,在那里按回来会让他们退出。
编辑:此外,如果其他用户访问浏览器并重新打开该页面,则不会显示该用户。