Php 如何防止浏览器在返回时重新填充表单数据

Php 如何防止浏览器在返回时重新填充表单数据,php,Php,我有一个将数据提交到数据库的php表单。成功填写表单并提交数据后,表单将因页面刷新而清除。当用户点击浏览器上的后退按钮时,数据返回 是否有一个php函数可以阻止缓存这些数据?在表单的输入字段中自动完成=“off”?没有可靠的方法,因为背面的行为因浏览器而异。此外,如果有人回顾了历史,而你改变了正在发生的事情,那么你就是在改变历史。撇开形而上学的“哇!”不谈,这不是一个好主意 除了重新提交的问题外,这会导致什么问题?如果表单重新提交是一个问题,那么您需要在快速双击submit to Anway的情

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


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

在表单的输入字段中自动完成=“off”?

没有可靠的方法,因为背面的行为因浏览器而异。此外,如果有人回顾了历史,而你改变了正在发生的事情,那么你就是在改变历史。撇开形而上学的“哇!”不谈,这不是一个好主意


除了重新提交的问题外,这会导致什么问题?如果表单重新提交是一个问题,那么您需要在快速双击submit to Anway的情况下处理它。包括隐藏的nonce值(UUID很好),将nonce与表单所做的任何操作的记录一起存储,并拒绝重复的nonce。

我认为问题不在于自动完成,而在于发布的数据。当使用浏览器中的“后退”按钮时,这些数据会重新出现在表单中。就我个人而言,如果我提交了你的表单,收到HTTP错误响应,然后点击[后退],只是为了看到你认为篡改我的历史数据是个好主意,并最终迫使我重新输入所有内容,我会非常生气。嗨,Jon,问题是重新提交表格。我已经考虑过你的建议了,只是想问问pragma no cache是否能帮我解决这个问题。如果有,我通常更倾向于采用更简单的方法。pragma不推荐使用任何缓存,因此请查看缓存控制标头。撇开这一点不谈,历史记录不同于web缓存(在标准中非常明确地说明了这一点)。Web缓存为我们提供了避免必须联系服务器获取给定URI或下载整个内容的方法。浏览器历史记录是以前浏览器所处状态的记录,完全不是同一件事。每年至少阅读几次。你永远不会对它过于熟悉。我遇到了一个类似的问题,我正在动态创建一个表单,然后提交它,这非常有效。但是当在Android上点击返回箭头,然后完全重新填充我认为是表单的时候,它不会发生。表单数据保持上次传递时的状态,并重新提交。看起来浏览器中有什么东西在缓存表单,但是表单和以前的值都不会出现,直到我用新值重新填充它们,然后它仍然提交旧值。我也会直接问一个问题。如果你有一个简单的电脑和浏览器亭,客户使用它以表单的形式提交他们的信息,它基本上会为每个后续客户每次循环回一个新的表单,你不希望下一个客户能够回击几次以查看前一个客户的信息?想要这样做是有真正的理由的。@mikato在这种情况下,你究竟为什么要回到过去,而不是回到新的形式?