当前位置:  开发笔记 > 编程语言 > 正文

在提交时避免使用PHP中的竞争条件:请不要多次单击提交!

如何解决《在提交时避免使用PHP中的竞争条件:请不要多次单击提交!》经验,为你挑选了2个好方法。

不久前,在线应用曾经说过,"不要多次点击提交." 现在已经不见了,对吗?你怎么防范PHP中的那个?

我正在使用的一个解决方案涉及在Session中放置一个变量,因此您不能每10秒向页面提交一次以上.这样,数据库工作就会完成,因此可以进行正常的检查.显然,这感觉就像一个黑客,可能是.

编辑:感谢大家的Javascript解决方案.那没关系,但这有点工作.1)这是一个输入类型=图像和2)提交必须继续射击,直到Spry的东西说它没关系.这个编辑只是我抱怨,基本上,因为我想在查看Spry的东西之后,我将能够弄明白.

编辑:不是任何人都会与Spry集成,但这是我使用Prototype for document.getElementByid的最终代码.欢迎评论!

function onSubmitClick() {
    var allValid = true;
    var queue = Spry.Widget.Form.onSubmitWidgetQueue; 
    for (var i=0;i

由于某种原因,第二次提交表格是必要的......



1> ya23..:

您应该同时进行客户端和服务器端保护.

客户端 - 如cletus描述的那样,例如通过jquery禁用按钮.

服务器端 - 在表单中放置一个令牌.如果有两个具有相同令牌的提交,请忽略后者.使用此方法,您可以免受CSRF的侵害.



2> cletus..:

这是jQuery有用的一个很好的例子(你可以在任何Javascript中做到这一点).添加此代码:

$("form").submit(function() {
  $(":submit",this).attr("disabled", "disabled");
});

一旦点击一次,它就会禁用提交按钮.


从不禁用严重的东西按钮.如果页面加载速度很慢,用户将停止页面加载,并且在按钮被禁用时将无法继续.然后他将不得不重新加载页面并再次进入表格!-1
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有