【发布时间】: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 是的.. 密码是哈希... 先生,我们该如何解决这个问题?