【问题标题】:AJAX success result according to PHP if statement根据 PHP if 语句的 AJAX 成功结果
【发布时间】:2018-02-12 12:23:21
【问题描述】:

我有一个带有提交按钮的登录表单,它调用 Javascript 函数,在那个函数中我用 AJAX 调用 PHP 文件。在 PHP 方面,我检查用户名、电子邮件和密码是否正确,然后将结果返回到带有 Result 类的 div。我需要返回 PHP 检查结果并在 javascript 中进行进一步操作,我的代码:

PHP:

if (isset($_POST['username_or_email']) && isset($_POST['password'])) {
    $username_or_email = mysqli_real_escape_string($conn, $_POST['username_or_email']);
    $password_post = mysqli_real_escape_string($conn, $_POST['password']);

    $sql = "SELECT `password` FROM `users` WHERE `username` = '".$username_or_email."' OR `email` = '".$username_or_email."' LIMIT 1";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_assoc($result);
    /* Check if username or email exists */
    if (mysqli_num_rows($result) > 0) {
        echo "valid_user";
    } else {
        echo "invalid_user";
    }
    /* Check if password is correct */
    if (password_verify($password_post, $row['password'])) {
        echo 'valid_pass';
    } else {
        echo 'invalid_pass';
    }
    $conn->close();
} 

查询:

success: function (data) {
        if (data == "invalid_user") {
            $(".result").fadeIn(500).html("Incorrect username or email.");
        }
        if (data == "invalid_pass") {
            $(".result").fadeIn(500).html("Incorrect password.");
        }
        if (data == "valid_pass") {
           $(".result").fadeIn(500).html("Success, redirecting to account.");

           setTimeout(function() {
              document.location.href = 'nextpage.php';
           }, 2500);
        }
     }

所以我的问题是:如果我在 PHP 端有多个 IF 语句,如何正确检查 JQUERY 端。用户按下登录按钮后,我想显示用户名或密码是正确/不正确的,哪个是正确/不正确的,仅用于信息目的。

【问题讨论】:

  • 如果你想发回不同的字符串,你应该切换到 json 响应。只需使用您要发回的信息构建一个数组,然后在 php 脚本的末尾对其进行编码和回显。在 javascript / jQuery 中也易于解析。
  • and which one is correct/incorrect, it is needed just for information purpose. - I strongly advise you to show the same error message for incorrect username and incorrect password!
  • 如果这是来自您的老板(或更高级别)的要求,请告诉他们他们完全搞错了,并向他们展示我在上面发布的链接。在这件事上站稳脚跟! the code you write is ethical 是你的责任
  • Cashbee - 可能你是对的,出于安全原因,最好不要显示究竟是什么错误。

标签: php jquery ajax


【解决方案1】:

最好的方法是在您的 PHP 文件中创建一个元素数组并存储您需要的所有信息。例如:

$info=array("user"=>"valid","password"=>"invalid");

然后,将数组转换为 JSON 字符串并简单地回显它:

echo json_encode($info);

一旦检索到数据,您就可以通过将它们转换成一个 javascript 元素数组来轻松操作它们,如下所示:

info=JSON.parse(data);

注意: PHP 只能通过 字符串 与 Javascript 进行“通信”。 JSON 字符串是实现此类结果的最常用方法,因为它很简单。

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2013-06-21
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2020-07-18
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多