刷新页面(F5 / CTRL + R)时如何防止表单重新提交
|
我有一个简单的表单,可将文本提交到SQL表。问题在于,用户提交文本后,他们可以刷新页面,并且无需再次填写表单即可再次提交数据。提交文本后,我可以将用户重定向到另一个页面,但是我希望用户停留在同一页面上。
我记得读过一些有关为每个用户提供唯一的会话ID,并将其与另一个值进行比较的信息,这些值解决了我遇到的问题,但我忘记了它在哪里。
没有找到相关结果
已邀请:
21 个回复
盛梯獭八搽
宦哨抹存胳
来防止刷新和后退按钮重新提交。
概念证明在这里:https://dtbaker.net/files/prevent-post-resubmit.php 我仍然建议使用Post / Redirect / Get方法,但这是一个新颖的JS解决方案。
拭十年
外镶受继
只需将这一行放在文件的页脚处即可看到魔术
甲车劲
,在表单页面上设置
:
之后,用文本框“ 8”的值检查“ 5” 像这样:
樊熄忙暖
您还可以重定向到同一页面。 如果您正在执行诸如注释之类的操作并且希望用户停留在同一页面上,则可以使用Ajax来处理表单提交
长拳
您可以重定向到相同页面或不同页面。 将$ _POST插入数据库后,取消设置。
貉骂
对象来处理
请求后逃避重定向。 因此,您具有HTML表单:
在服务器上处理此表单时,您不必像这样通过设置
头将用户重定向到
:
处理ѭ13的数据后,您将渲染小
,结果
render20ѭ应该呈现:
结果是: 如您所见,表单数据被“ 13”修改为“ 26”脚本。 该脚本使用以下命令一次处理“ 13”个数据并立即渲染“ 16”: 没有重定向 刷新页面(F5)时没有re
数据 在浏览器历史记录中导航到上一页/下一页时没有re
UPD 作为另一个解决方案,我要求功能要求Mozilla FireFox团队允许用户设置
标头,该标头的工作方式类似于
标头,并使
模式过时。 简而言之。当服务器处理表格
成功数据时: 设置
报头而不是
渲染处理
表单数据的结果,因为它将以
模式呈现给
请求 浏览器依次看到
标头: 用
值调整
当用户刷新页面时,浏览器将向
协商
请求,而不是re
表单数据 我认为,如果实施,效果会很好,不是吗?
穗揣
然后在您的代码中执行以下操作:
漂汀拦
魄龟呸筹
陷牡彭拈峰
镶骄册筷
呈辖玫割善
在您的html表单中输入以下内容:
因此,每次提交表单时,都会生成一个新动作,将其存储在会话中并与后动作进行比较。 附:如果您使用的是Get表单,则可以轻松地使用GET更改所有POST,它也可以使用。
懊毁暗
孝箱捆讨
嫩昧竞莫
艰管垮淮
它只能避免重新提交$ _POST,而不是$ _GET。但这是我需要的行为。 重新提交问题不适用于文件上传!
链眷克袒姜
桔适丛
坝硷操
变量作为逻辑语句来保存表格中的内容。您始终可以重定向到同一页面(如果它们刷新,并且在浏览器中单击
时,将不再设置Submit post变量。只需确保您的Submit按钮的
和
为
。