使用PHP停止多个表单提交的最佳方式是什么?
答
<?php
//do stuff with the form input
//do not display anything
header('Location: ready.php');
?>
eaysiest和最快的方法是,将用户重定向到另一个页面,所以如果他重定向后relodes没有输入将被发送第二次。
您可以使用$ _SESSION存储用户状态,即他是否已经发送了表单。
答
在客户端,您可以简单地禁用单击后的表单按钮。但是,这提供了一个非常基本的安全级别。
您的下一步将是通过PHP阻止它。在这种情况下,最好在表单中包含一个隐藏字段,其中包含一个唯一和可识别的令牌。为了执行您的支票,您必须保留过去使用的令牌列表,并检查之前是否已提交。
我一直想知道重新启用按钮。如果用户按下“停止”,我们是否应该使用'setTimeout()'(或类似的)重新启用它。当用户放弃表单提交时,是否有一个'onabort'被触发?无论如何,+1 :) – alex 2010-10-08 00:33:10
那么它的全部目的是挫败多个提交。如果你提供了一种取消提交的方式,而不是从UI的角度重新启用'submit'似乎是必须的。而不是'setTimeout()',你可以简单地在单击中止时触发一个事件。 – 2010-10-08 00:44:00
当用户中止提交时触发了什么事件? – alex 2010-10-08 01:09:42