不久前,在线应用程序曾经说过,“不要多次点击提交”。现在已经消失了,对吧?例如,在 PHP 中如何防范这种情况?
我使用的一个解决方案是在会话中放置一个变量,这样您就不能每 10 秒多次提交到一个页面。这样数据库工作就完成了,因此可以进行正常检查。显然,这感觉就像是黑客攻击,而且可能确实如此。
Edit:感谢大家提供 Javascript 解决方案。很好,但这需要一些工作。 1)这是一个输入类型=图像,2)提交必须持续触发,直到斯普瑞的东西 http://labs.adobe.com/technologies/spry/说没关系。基本上,这个编辑只是我的抱怨,因为我想在看过 Spry 的东西之后我就能弄清楚。
Edit:并不是说任何人都会与 Spry 的东西集成,但这是我使用 document.getElementByid 的 Prototype 的最终代码。欢迎评论!
function onSubmitClick() {
var allValid = true;
var queue = Spry.Widget.Form.onSubmitWidgetQueue;
for (var i=0;i<queue.length; i++) {
if (!queue[i].validate()) {
allValid = false;
break;
}
}
if (allValid) {
$("theSubmitButton").disabled = true;
$("form").submit();
}
}
由于某种原因,需要提交第二份表格......
您应该同时进行客户端和服务器端保护。
客户端- 禁用按钮,例如正如 cletus 所描述的那样,由 jquery 实现。
服务器端- 在表格中放置一个令牌。如果有两个提交具有相同的令牌,则忽略后者。使用这种方法,您可以免受CSRF http://en.wikipedia.org/wiki/CSRF.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)