2016-07-14 89 views
0

代码时,保存的表单,类似这样被执行:PHP代码的形式有时被执行两次同时

$wpdb->query("DELETE FROM Unit_list WHERE group = '$group_id'"); 
$order = 1; 
$unique_units = array_unique($units); 
foreach ($unique_units as $unit) { 
    $wpdb->insert("Unit_list", array("unit" => $unit, "group" => $group_id, "sort_order" => $order)); 
    $order++; 
} 

几次每天会有一些重复。

如果表单提交了两次,并且有足够的时间让代码的这部分运行,那么每次都不会有重复,因为第二次将涉及整个第一组被删除。

如果有重复,这段代码必须在同一时间运行两次。

快速双击会做到这一点,但如果第三次点击很慢,而不是同时进行,则该组将被删除而不涉及重复。

在确定双击是原因之后,解决方案是停止检测到表单提交按钮的后续点击。

+0

这不是理论上的网站。 – RiggsFolly

+2

他们可以点击提交按钮两次。 – Barmar

+1

检查日志以查看是否有多个对URL的调用。 – Barmar

回答

1

见一个客户端(jQuery的),这里的解决方案:Prevent double submission of forms in jQuery

而且PHP的一个位置: http://phpsense.com/2006/prevent-duplicate-form-submission/

+0

谢谢...代码使用复杂$('#editUserForm')。submit(function(e){function返回false(用于验证问题)或$ form.submit(); ....它始于e.preventDefault();但我最近评论说,出于某种原因... –

+1

所以我刚添加$('#submit-form-b​​utton')。 prop('disabled',true); $ form.submit();之前; –

0

看来问题是人们点击多次。 PHP代码更新数据库运行几次,如果我点击提交按钮几次......

但是......

我无法复制命令数据库条目的问题被交织。我怀疑它需要鼠标点击在几毫秒内。也许他们的鼠标或浏览器出现问题,导致双击事件触发。它在几天的过程中多次发生在特定用户身上。