如何在下面的mysqli代码中检查与给定密码相同的用户密码id,该代码不起作用


if(array_key_exists('signinbtn',$_POST)){
if(!$_POST['email']){
echo'<p>please enter your email</p><br>';
} elseif(!$_POST['password']){
echo'<p>please enter your password</p><br>';
} else {
$query = "SELECT `id` 
FROM `users` 
WHERE email = '".mysqli_real_escape_string($link , $_POST['email'])."'";
$query_result = mysqli_query($link , $query);
if($get_row = mysqli_num_rows($query_result) == 0){
echo'Email is not registered';
} else {
$post_query = "SELECT `password` 
FROM `users` 
WHERE email = '".mysqli_real_escape_string($link , $_POST['email'])."'";
if($resultforsignup = mysqli_query($link , $post_query)){
if(mysqli_num_rows($resultforsignup) == $_POST['password']){
echo'success';
} else {
echo'password does not meet';
}
} else {
echo'error while sign in';
}
}
}
}

我正在学习mysql现在的问题是,我想检查用户密码是否相同。请解决这个问题这是mridul.ml 网站

您正在将查询返回的行数与密码进行比较。因此,除非密码为1,否则它将不起作用。

如注释中所述,您应该为查询使用准备好的统计信息。

此外,您显然将密码的原始文本存储在数据库中。你永远不应该这样做。您应该使用salt和安全散列作为密码。幸运的是,PHP为此提供了一些方便的函数。使用password_hash将密码存储在数据库中,然后在从数据库中获取密码时使用password_verify查看密码是否正确。这样可以防止攻击者在访问您的数据库时获取您所有用户的密码。

最新更新