如何正确注销(PHP)

时间:2011-03-06 15:50:34

标签: php session cookies

当我按下登录按钮时,它会删除cookie重定向到主页面。它运作得很好。

但是当我按下“后退”按钮(或退格键)时,登录页面仍会显示。出于隐私原因,我想阻止这种情况。

你会怎么做?

6 个答案:

答案 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重定向到“很快见到你”或类似的页面,在那里按回来会让他们退出。

编辑:此外,如果其他用户访问浏览器并重新打开该页面,则不会显示该用户。