【发布时间】:2011-12-21 11:54:38
【问题描述】:
我在提交到同一页面的 php 页面上有一个表单。 我注意到,如果我重新加载/刷新页面,表单会重新提交。 如何以最简单的方式编写代码来避免这种情况?
【问题讨论】:
-
您可以尝试重定向到刷新页面。
-
你不能......关键是用户输入可能是生成您当前所在的页面所必需的。我建议不要管这种行为,除非你有特定的理由来改变它。如果你这样做了,你可以按照 Blender 的建议去做,然后转到一个中间页面,或者在转到下一页之前通过 AJAX 发送你的数据。
-
也可以在隐藏输入中生成随机字符串,放入cookie(或会话)中,验证字符串是否对应cookie的值,第一次发送表单时销毁.因此,如果用户下次发送相同的数据,验证将失败,您知道表单已经发送。但它需要 cookie,所以如果您可以简单地重定向,这是更好的选择。
-
如果您想保持在同一页面上,可以使用 AJAX 异步提交表单。除此之外,大多数解决方案都是粗略的,实际上是一种 hack,而不是实际的解决方案。在刷新时提交 POST 数据是一种正常的浏览器行为,浏览器会保持这种状态是有原因的。