限制提交许多请求Ajax php表单


Limit submitting many requests Ajax php form

我想计数提交的表单的数量,当计数达到3。Ajax应该显示错误消息。

我已经尝试分配计数会话,当计数> 3我只是给出错误的查询(如果有语法错误的查询,ajax显示错误)

我的ajax

$.ajax({
    url:'vals/process.php', 
    data:$(this).serialize(),
    type:'POST',
    success:function(data){
    console.log(data);
        swal("Thank you", "success :)", "success");
    },
    error:function(data){
        swal("Sorry", "error", "error");
    }
});

这是我的php

$_SESSION['limitRequest'] = 0;
if($_SESSION['limitRequest'] < 3){
    $SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
    $_SESSION['limitRequest']++;
}
else{
    $SQL = "exceed the limit";
}
$Query = mysqli_query($connecDB,$SQL);

逻辑上,我相信这种方法应该是有效的,但我认为它并没有增加$_SESSION['limitRequest']的价值。

我们如何解决这个问题?如果我的方法不可用,我如何限制用户在ajax中提交这么多请求?

与其每次执行都设置$_SESSION['limitRequest'] = 0,不如试试这个

if ( ! isset($_SESSION['limitRequest'] ) {
    $_SESSION['limitRequest'] = 0;
}
if($_SESSION['limitRequest'] < 3){
    $SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
    $_SESSION['limitRequest']++;
} else {
    $SQL = "exceed the limit";
}
$Query = mysqli_query($connecDB,$SQL);

如果返回一个错误条件,而不是仅仅在超出限制时使查询失败,那就更好了。

if ( ! isset($_SESSION['limitRequest'] ) {
    $_SESSION['limitRequest'] = 0;
}
if($_SESSION['limitRequest'] < 3){
    $SQL = "insert into packageorder( id, name) values( '$id', '$name' )";
    $_SESSION['limitRequest']++;
} else {
    $res = new stdClass();
    $res->error = true;
    $res->errorMsg = "exceed query limit";
    echo json_encode($res);
    exit;
}
$Query = mysqli_query($connecDB,$SQL);
$res = new stdClass();
$res->error = true;    // default status
if ( $Query ) {
    $res->error = false;
    $res->msg = "Update OK";
} else {
    $res->error = true;
    $res->msg = "Query Failed";
}
echo json_encode($res);
exit;