2012-02-05 67 views
0

我有其中一个用户从不同的文本字段提交在我的网页数据到MySQL数据库的形式。是否有任何代码可以使用,因为它不会让他们再次提交/更新数据?例如,它会将他们重定向到一个网页,表示抱歉,我们已收到您的数据。从表单提交数据到mysql阻止用户两次

我有一个唯一的编号为每个用户,如果这有帮助。任何帮助表示赞赏。

+1

你刚才查询你认为可以(使用POST值)是重复的值分贝,如果该查询返回一个或多个行,你不跑插入查询,而是显示一些消息。无需在任何地方重新定向。 – 2012-02-05 05:23:58

回答

1

使用标记,它将避免双重提交和CSRF。

只需令牌添加到一个数组,$ _SESSION最有可能的,并在使用时弹出他们。

另外,提交后禁用JS提交按钮。

您还可以设置在说,他已经执行的操作会话用户一个变种,所示例上传他的照片。例如,如果上传脚本中存在错误,请将其取消设置。

0

当您收到帖子时,请在数据库中查询唯一用户号码。如果返回一个非空结果,则显示错误。否则,将数据保存到数据库。

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

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

0

答案巨大依赖于原因针对用户可能发送数据的两倍。

  • 事故的情况下,有一种技术,和所有其他不会帮助你甚至有点。
  • 如果是故意重复技术是完全不同并且再次没有通用的解决方案 - 一切都取决于特定的情况。

如果你在意解释你的某个案例,你会得到一个合适的解决方案。

对于按“刷新”后与结果的页面上最傻的情况下,你必须使用Location: HTTP标头,如重定向浏览器

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

如果用户提交表单数据,他们可以登录并再次提交。我希望它在登录后显示'抱歉,您已经选择了您的数据'。代码会有帮助。 – user1188711 2012-02-05 13:43:15

+0

为“可能有用的代码”,你可以申请任何自由职业网站。这是一个不起眼的Q/A网站,而不是免费代码网站。 – 2012-02-05 14:39:18