【问题标题】:Match Username and Password that is fetched in database - Jquery [duplicate]匹配在数据库中获取的用户名和密码 - Jquery [重复]
【发布时间】:2019-05-15 03:57:28
【问题描述】:

我需要匹配在数据库中获取的用户名和密码。现在的问题是我无法匹配如下图所示的用户名和密码:

下面是我的代码:

HTML

    <body>  
          <div class="container box">  
           <div class="form-group">  
            <h3 align="center">Live Username Available or not By using PHP Ajax Jquery</h3><br />  
            <label>Enter Username</label>  
            <input type="text" name="username" id="username" class="form-control" />
            <input type="password" name="password" id="password" class="form-control" />


            <span id="availability"></span>
            <br /><br />
            <button type="button" name="register" class="btn btn-info" id="register" disabled>Register</button>
            <br />
           </div>  
           <br />  
           <br />  
          </div>  
  </body>  

jQuery 脚本 - 这是在用户名和密码匹配或不匹配后显示匹配可用性的位置

<script>  
 $(document).ready(function(){  
  $('#username, #password').blur(function(){

    var username = $('#username').val();
    var password = $('#password').val();

     $.ajax({
      url:'check.php',
      method:"POST",
      data:{user_name:username, password:password},
      success:function(data)
      {
        console.log(data);
       if(data != '0')
       {
        $('#availability').html('<span class="text-danger">Username and Password not Match</span>');
        $('#register').attr("disabled", true);
       }
       else
       {
        $('#availability').html('<span class="text-success">Username and Password Available</span>');
        $('#register').attr("disabled", false);
       }

      }

     })

  });
 });  
</script>

check.php - 数据库连接和查询

  <?php  
    //check.php  
    $connect = mysqli_connect("localhost", "username", "", "dbname"); 
    if(isset($_POST["user_name"], $_POST["password"]))
    {
     $username = mysqli_real_escape_string($connect, $_POST["user_name"]);
     $password = mysqli_real_escape_string($connect, $_POST["password"]);
     $query = "SELECT * FROM admin WHERE username = '".$username."' AND password = '".$password."' ";
     $result = mysqli_query($connect, $query);
     echo mysqli_num_rows($result);
    }
 ?>

【问题讨论】:

  • 您的密码是纯文本还是加密?如果您使用任何框架,您的密码可能会被加密,您必须比较哈希而不是纯文本密码。
  • 或者尝试像这样改变条件 if(data !== '0')
  • @daremachine 是的,你是对的,我在这个例子中没有使用加密或散列。虽然我的数据库是散列...这是一个问题吗???
  • 如果您在 db 中的 'password' 列中看到 #%greg$65 并尝试将其与帖子中发布的纯文本进行比较,则 #%greg$65 在您的代码中不等于 abc。跨度>
  • @daremachine 是的.. 密码是哈希... 先生,我们该如何解决这个问题?

标签: php jquery mysqli


【解决方案1】:

你可以试试这个:

if(isset($_POST["username"], $_POST["password"])) 
    {     
 $username = $_POST["username"]; 
 $password = $_POST["password"]; 
 $query = mysql_query("SELECT username, password FROM admin WHERE username = '".$username."' AND  password = '".$password."'");
 $result=$connect->query($query);
        if(mysql_num_rows($result) > 0 )
        { 
            $_SESSION["logged_in"] = true; 
            $_SESSION["username"] = $name; 
        }
        else
        {
            echo 'The username or password are incorrect!';
        }
}

【讨论】:

  • 不起作用先生,您认为它在脚本代码上吗?
【解决方案2】:

我认为您的情况在客户端脚本中是错误的。如果用户名和密码匹配,那么它将返回大于 0 的值。在这种情况下,您的代码应该是

success:function(data)
  {
    console.log(data);
    if(data == 0)
    {
      $('#availability').html('<span class="text-danger">Username and Password not Match</span>');
      $('#register').attr("disabled", true);
    } 
    else
    {
      $('#availability').html('<span class="text-success">Username and Password Available</span>');
      $('#register').attr("disabled", false);
    }
   }

【讨论】:

  • 我已经尝试过一段时间了.. 但是 IDK 为什么它有效!谢谢伙计,这太棒了
【解决方案3】:

FOR MINUS POINTS 这是对 OP 也有的问题的解决方案。请参阅主线程 cmets。谢谢你。

只需将您的 POST 值包装到 md5 function

$password = md5(mysqli_real_escape_string($connect, $_POST["password"]));

或者可以尝试使用MD5 in database

$query = "SELECT * FROM admin WHERE username = '".$username."' AND password = MD5('".$password."') ";

那么密码哈希应该等于数据库哈希。

【讨论】:

  • 我试过了,先生,但我也试过在我的表中插入没有哈希的密码..它也没有用,但为你的想法点赞。
  • 我更新了答案。
  • 这里仍然不起作用是查询看起来像0SELECT * FROM admin WHERE username = 'admin' AND password = MD5('202cb962ac59075b964b07152d234b70')
  • 还是在脚本代码里???你认为问题出在脚本代码上吗?
  • 不,你创建哈希两次.. 使用第一个 php 方法或第二个通过 db 查询。您现在从哈希创建哈希。
猜你喜欢
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多