【发布时间】:2012-12-03 01:48:38
【问题描述】:
我想知道我可以使用哪些技术来避免用户在刷新页面并再次选择提交时两次发布表单?
例如我在 regiter.php 中有表单并在 register.php.
中处理它1st 我可以在另一个文件中处理,例如register_process.php 并重定向到 register.php,但是我必须创建大约 20 个新页面并重新定位大量代码,我不想要那个选项。
第二次我可以玩 headers 我不记得确切的技巧,但有一些糟糕的体验 - 用户在刷新页面后看到旧数据...
3rd 我可以在成功后重定向到一些 dummy.php 并从 dummy.php 跳回 register.php 那么即使他们刷新页面浏览器也不会重新发布,但它并不能防止他们使用 后退按钮 并选择重新发布,我知道我可以使页面过期,但我发现让我和其他用户看到页面过期错误的烦人体验。
4th在页面加载后为每个表单使用一些唯一的“访问密钥”,该页面将随表单一起发布,并且一旦使用就无法重复使用,但是我对该功能的逻辑有点挣扎。如果不将其存储在 MySQL 数据库中,如何知道密钥已被使用,我认为基于时间的访问也不是很好,因为有些用户在页面打开和表单提交之间可能需要很长时间。
我需要更多关于如何避免用户再次提交表单的建议。
【问题讨论】: