PHP表单代码有时会同时执行两次

时间:2016-07-14 00:27:35

标签: javascript jquery duplicates

保存表单时执行与此类似的代码:

$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++;
}

每天几次会有一些重复。

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

对于重复项,此代码必须在同一时间运行两次。

快速双击就可以了,但是如果第三次点击很慢而且没有同步,则该组将被删除而不涉及重复。

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

2 个答案:

答案 0 :(得分:1)

请在此处查看客户端(jQuery)解决方案:Prevent double submission of forms in jQuery

这里有一个PHP: http://phpsense.com/2006/prevent-duplicate-form-submission/

答案 1 :(得分:0)

似乎问题是人们多次点击。如果我多次点击提交按钮,那么更新数据库的php代码会运行几次......

但是...

我无法复制有序数据库条目交错的问题。我怀疑它需要鼠标点击才能在几毫秒之内。也许他们的鼠标或浏览器出现问题导致双击事件触发。特定用户在几天内多次发生这种情况。