微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

登录表单的 jQuery 验证 (Ajax)

如何解决登录表单的 jQuery 验证 (Ajax)

对于我的生活,我无法理解为什么这不起作用。我有以下代码

script.js

$("#login").validate({
    rules: {
      username: {
        required: true,minlength: 4,maxlength: 24,remote: {
          url: "../core/login.PHP",type: "post"
        }
      },password: {
        required: true,minlength: 8,type: "post"
        }
      }
    },messages: {
      username: {
        required: "Username required",remote: "Username invalid"
      },password: {
        required: "Password required",remote: "Password invalid"
      }
    }
  });

登录.PHP

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    require_once 'db.PHP';
    if (isset($_POST['username'])) {
        $username = $_POST['username'];
        $sql = "SELECT * FROM users WHERE username='$username'";
        $results = MysqLi_query($conn,$sql);
        if (MysqLi_num_rows($results) == 1) {
            echo 'true';
        } else {
            echo 'false';
        }
    }
    if (isset($_POST['password'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $sql = MysqLi_query($conn,"SELECT password FROM users WHERE username='$username'");
        $results = MysqLi_fetch_array($sql);
        $hashed_password = $results['password'];
        if(password_verify($password,$hashed_password)) {
            echo 'true';
        } else {
            echo 'false';
        }
    }
} else {
    header('HTTP/1.0 403 Forbidden');
}

所以问题来了。本质上,我试图通过 ajax 验证用户名和密码,因为表单在弹出窗口中。如果在数据库中找不到匹配的用户名,将显示用户名无效”。这部分工作得很好。

现在,当我尝试验证密码时,问题出在哪里。出于某种原因,我不明白为什么它没有得到 $username = $_POST['username'];。但例如,如果我在密码部分手动定义 $username = 'SomeUser2021';,它将开始正确验证密码。

此外,如果有人知道如何显示一个简单的错误消息,而不是像“用户名或密码不正确”这样的 2 个单独的错误消息,那就太好了。

任何帮助将不胜感激。

解决方法

只是复制你的代码。如果您想要单个响应“用户名或密码不正确”,您可以使用一个函数来验证这两个值。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    require_once 'db.php';
   if (isset($_POST['username']) && isset($_POST['password'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $sql = "SELECT * FROM users WHERE username='$username' AND password='$username'";
        $results = mysqli_query($conn,$sql);
        if (mysqli_num_rows($results)) {
            echo 'true';
        } else {
            echo 'false';
        }
    } else {
      echo 'false';
    }
} else {
    header('HTTP/1.0 403 Forbidden');
}

此外,在表单验证中,您可以对用户名和密码进行一次检查。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。