2010-08-08 75 views
4

我有一个将数据提交给数据库的php表单。当表单成功填写并提交数据时,表单会因页面刷新而清除。当用户点击浏览器上的后退按钮时,数据返回。如何防止浏览器在返回时重新填充表单数据

是否有一个PHP函数可以防止缓存这些数据?

+1

就我个人而言,如果我提交了表单,得到了HTTP错误响应并点击[Back],我就会非常生气,只是为了看到你认为篡改我的历史数据并最终迫使我重新输入一切。 – 2010-08-08 23:48:42

回答

2

没有可靠的方法,因为背后的行为在浏览器之间有所不同。而且,如果某人回顾了历史,并且改变了发生的事情,那么您正在改变历史。形而上学的“哇!”除此之外,这不是一个好主意。

除了重新提交的问题之外,这个原因是什么问题?如果表单重新提交是一个问题,那么你需要在快速双击提交过程中处理它。包含一个隐藏的nonce值(UUID是好的),将它存储在表单所做的任何记录中,并拒绝重复的随机数。

+0

嗨乔恩,问题是重新提交的形式。我已经考虑过你在暗示什么,只是想我会问一下,编译指示无缓存是否会为我处理这个问题。如果有的话,我通常宁愿采取更简单的方法。 – 2010-08-08 23:51:15

+1

pragma no-cache已弃用,因此请查看缓存控制标头。除此之外,历史记录与网页缓存不同(在标准中明确表述如此)。 Web缓存为我们提供了避免或者必须联系服务器以获得给定URI或者不得不下载整个内容的方法。浏览器历史记录是浏览器之前的状态记录,完全不同。 每年至少给予http://www.ietf.org/rfc/rfc2616.txt至少几次阅读。你永远不会过于熟悉它。 – 2010-08-09 00:01:09

+0

我有一个类似的问题,我动态地创建一个表单然后提交它,这很好。但是,当在Android上点击后退箭头,然后完全重新填充我认为的表单时,并不需要。表单数据仍然是前一遍的内容,然后重新提交。看起来浏览器中的某些内容正在缓存表单,但是直到我使用新值重新填充表单之前,表单和之前的值都不会显示,但它仍会提交旧值。我也会直接提问。 – iJames 2011-11-17 16:47:16

3

autocomplete =“off”在表单的输入字段中?

+0

我认为问题不在于自动完成,而在于POSTED数据。当使用浏览器中的后退按钮时,这些数据会以表格形式重新出现。 – 2010-08-08 23:31:23

+0

为我做了诡计,谢谢! (在铬,使用复选框) – meyertee 2012-09-19 18:26:29

相关问题