Php 防止用户两次从表单向mysql提交数据

Php 防止用户两次从表单向mysql提交数据,php,mysql,Php,Mysql,我有一个表单,用户从我的网页上的各种文本字段向mysql数据库提交数据。如果不允许他们再次提交/更新数据,我是否可以使用任何代码?e、 它会将他们重定向到一个页面,说对不起,我们已经收到了你的数据 如果有帮助,我会为每个用户提供一个唯一的号码。感谢您的帮助 使用令牌,可以避免双重提交和CSRFs 只需将令牌添加到数组中,最有可能是$\u会话,并在使用时弹出它们 另外,在提交后使用JS禁用提交按钮 您还可以在会话用户中设置一个var,表示他已经执行了一个操作,例如上传了他的图片。例如,如果上传脚本

我有一个表单,用户从我的网页上的各种文本字段向mysql数据库提交数据。如果不允许他们再次提交/更新数据,我是否可以使用任何代码?e、 它会将他们重定向到一个页面,说对不起,我们已经收到了你的数据


如果有帮助,我会为每个用户提供一个唯一的号码。感谢您的帮助

使用令牌,可以避免双重提交和CSRFs

只需将令牌添加到数组中,最有可能是$\u会话,并在使用时弹出它们

另外,在提交后使用JS禁用提交按钮


您还可以在会话用户中设置一个var,表示他已经执行了一个操作,例如上传了他的图片。例如,如果上传脚本中有错误,请取消设置。当您收到帖子时,请在数据库中查询唯一的用户号码。如果返回非空结果,则显示错误。否则,请将数据保存到数据库中

您需要确定的最大问题是您的唯一标识符是什么。听起来好像你已经有了一个(你提到了唯一的用户号?)你的唯一标识符可以是一个电子邮件地址,甚至是一整套提交的数据


还有其他方法可以模拟这一点,例如在用户的机器上设置cookie,或者禁用submit按钮,但是,这些都不是完全由您控制的。如果用户尝试的话,他们可以很容易地通过它们。因此,确定唯一标识符并验证服务器端可能是最好的方法。

答案很大程度上取决于用户可能发送两次数据的原因

  • 在发生事故的情况下,有一种技术,而所有其他技术都不会对你有任何帮助
  • 有意复制的情况下技术是完全不同的,同样没有通用的解决方案-一切都取决于特定的场景
如果你愿意解释你的特定案例,你会得到一个合适的解决方案

对于在有post结果的页面上按“重新加载”的最愚蠢的情况,您必须使用
位置:
HTTP标题重定向浏览器,例如

header("Location: ".$_SERVER['REQUEST_URI']);
exit;

您只需在db中查询您认为可以重复的值(使用POST值),如果该查询返回一行或多行,则不运行insert查询,而是显示一些消息。无需在任何地方重新定向。如果用户提交表单数据,他们可以立即登录并再次提交。我希望在他们登录后显示“抱歉,您已经选择了您的数据”。你可以申请任何自由职业者的工作网站。这里是一个简陋的问答网站,不是一个免费的代码网站。