【问题标题】:Receiving multiple data through AJAX in PHP?在 PHP 中通过 AJAX 接收多个数据?
【发布时间】:2016-09-21 07:48:25
【问题描述】:

我正在处理一个登录表单,用户在其中输入他的电子邮件,该电子邮件通过 AJAX 进行验证,然后密码也通过 AJAX 进行验证。 这是代码, JS代码-

//AJAX for email input field
function emailCheck(email) {
    return $.ajax({
        type: "POST",
        url: "ajax_index.php",
        data: "email=" + email
    });
}

//AJAX for password input field
function passwordCheck(password, email) {
    return $.ajax({
        type: "POST",
        url: "ajax_index.php",
        data: {password: password, email: email}
    });
}

PHP 代码 -

//receives POST request from email field
if (isset($_POST['email'])) {
    $email = mysqli_real_escape_string($dbconn, $_POST['email']);

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo -1;
    } else {
        $query = "SELECT * from users WHERE email = '$email'";
        $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn));
        $result_rows = mysqli_num_rows($query_result);

        echo $result_rows;
    }
}

//receives POST from password field
if (isset($_POST['password'], $_POST['email'])) {
    $email = mysqli_real_escape_string($dbconn, $_POST['email']);
    $password = mysqli_real_escape_string($dbconn, $_POST['password']);

    $query = "SELECT email, password from users WHERE email = '$email'";
    $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn));
    $result_rows = mysqli_num_rows($query_result);

    $row = mysqli_fetch_assoc($query_result);

    if (password_verify($password, $row['password'])) {
        echo 1;
    }
    else {
        echo 0;
    }
}

如您所见,对于密码字段,我必须同时获取$_POST['password']$_POST['email'],以便我可以根据该电子邮件验证密码。但这会调用两个处理程序,一个仅用于电子邮件字段,一个用于电子邮件和密码,我只想运行一个。那么,我该如何解决这个问题呢? 谢谢。

【问题讨论】:

  • 我们需要查看调用emailCheckpasswordCheck 函数的附加处理程序。
  • 检查邮箱是否存在继续输入密码否则返回邮箱m=不存在
  • 最好有一个额外的变量,如 action=emailCheckaction=passwordCheck 以避免混淆。

标签: php jquery ajax post


【解决方案1】:

所以,愚蠢的问题,我只需将密码字段的处理程序放在条件块中的电子邮件字段的处理程序中。所以如果我改成这个就可以了 -

if (isset($_POST['email'])) {
    if(isset($_POST['password'])) {
        $email = mysqli_real_escape_string($dbconn, $_POST['email']);
        $password = mysqli_real_escape_string($dbconn, $_POST['password']);

        $query = "SELECT email, password from users WHERE email = '$email'";
        $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn));
        $result_rows = mysqli_num_rows($query_result);

        $row = mysqli_fetch_assoc($query_result);

        if (password_verify($password, $row['password'])) {
            echo 1;
        }
        else {
            echo 0;
        }
    }
    else {
        $email = mysqli_real_escape_string($dbconn, $_POST['email']);

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            echo -1;
        } else {
            $query = "SELECT * from users WHERE email = '$email'";
            $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn));
            $result_rows = mysqli_num_rows($query_result);

            echo $result_rows;
        }
    }
}

或者正如Sasikumar 所说,使用额外的变量也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2011-09-13
    • 1970-01-01
    • 2011-05-04
    • 2015-10-24
    • 2022-01-04
    相关资源
    最近更新 更多