Php 如何禁用浏览器在按“上一步”按钮时重新生成表单数据

Php 如何禁用浏览器在按“上一步”按钮时重新生成表单数据,php,cookies,browser-cache,browser-history,cache-control,Php,Cookies,Browser Cache,Browser History,Cache Control,我有一个允许用户登录的web应用程序。当用户单击注销按钮时,我将取消设置所有POST变量并清除包含会话的所有cookie。但是,当我按下后退按钮时,所有POST变量仍然存在,最后登录的页面仍然出现,并且在用户cookie中生成了一个新会话 我已经检查了所有的头文件,比如没有缓存,必须重新验证,但仍然发生同样的情况 POST数据仍然存在这一事实表明页面正在从“浏览器历史记录”加载 我知道对于我的问题有一个完美的解决方案,因为许多web应用程序都是这样做的。我想知道大公司是怎么做的。必须有一个标准的

我有一个允许用户登录的web应用程序。当用户单击注销按钮时,我将取消设置所有POST变量并清除包含会话的所有cookie。但是,当我按下后退按钮时,所有POST变量仍然存在,最后登录的页面仍然出现,并且在用户cookie中生成了一个新会话

我已经检查了所有的头文件,比如没有缓存,必须重新验证,但仍然发生同样的情况

POST数据仍然存在这一事实表明页面正在从“浏览器历史记录”加载

我知道对于我的问题有一个完美的解决方案,因为许多web应用程序都是这样做的。我想知道大公司是怎么做的。必须有一个标准的方式,它将像一个魅力


PS:使用Javascript不是一个选项。也许有了JS,我可以做一些事情来阻止加载,但我不想这么做,因为很多用户可能已经禁用了JS。我也不想禁用浏览器中的“后退”按钮和“刷新”功能,有些应用程序就是这样做的。

我想,只有当用户登录并在登录后立即单击以注销时,才会发生这种情况。然后,当您按下浏览器中的“后退”按钮时,会出现一个发送表单,其中包含他的日志记录的$\u POST数据,浏览器会询问您是否要再次发送该表单。我说得对吗?你是说这个吗

如果是,则使用此解决方案避免再次发送表单(当单击后退按钮或按F5(刷新)时):

当您处理带有登录数据的表单时,请重定向到同一页面或主页(由您自行决定)。使用

然后,当他单击后退按钮或刷新页面时,它将不会再次发送登录数据,所以它不会重新登录他

如果还有其他原因,请发表评论,我将进一步解释。

1)使用POST传输表单数据 2) 在服务器端处理发布的数据后,向客户端发送
302moved
响应,强制其离开发布并将其定向到GET登录页


这应该是处理表单提交的一般方法,有效地禁止重新发布表单数据。无法使用GET表单-但是很少需要受保护的GET表单…

如何提交登录表单?使用GET还是POST?使用POST时,浏览器通常会询问是否可以重新发布表单数据。您所说的正是正在发生的事情。然而,这个解决方案并不奏效。它仍然加载最后一个页面。当然,在另一个html输出到页面之前,您需要使用页眉。在处理用户记录的数据并将其存储在会话中后,在那里添加两行,即位置到主页:header('location:/');嘿,对不起……就像我说的那样,它很有魅力……谢谢你,伙计……它解决了问题。现在你能解释一下为什么这样做吗?我的解决方案是有效的,因为当你重定向到f.e.主页时,$\u帖子会被清除,因为你通常会加载另一个页面。嗯……很简单……但是为什么我要使用302,我不能简单地重定向吗?
header("HTTP/1.1 302 Found");
header('Location: '.$url_to_redirect);