【发布时间】:2019-11-15 21:26:34
【问题描述】:
当我对密码进行哈希处理时,我使用了 password_hash($password, PASSWORD_ARGON2I)。
现在我想根据存储在我的 sql 服务器中的哈希密码来验证我的登录密码。但是,即使我提供了正确的密码,password_verify 仍然返回 false。有人可以帮忙吗?
我曾尝试在 google 和 stackoverflow 上搜索解决方案,但无济于事
if(isset($_POST['login'])) {
$username = strip_tags(trim($_POST["username"]));
$password = $_POST["password"];
$query = "SELECT * FROM USERNAME WHERE user_id= '".$username."' ";
$params = array();
$stmt = sqlsrv_query($conn, $query);
$row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
$hash_password = $row['password'];
$new = password_verify($password, $hash_password);
if(var_dump(password_verify($password, $hash_password))){
$msg = "Login Success";
}else{
$msg = "Login failure";
}
echo $msg;
}
输出返回“登录失败”
【问题讨论】:
-
去掉
var_dump(),应该是if(password_verify($password, $hash_password)){ -
@RiggsFolly 不起作用。我试过了
-
也停止摆弄
$_POST["username"]并更改 SQL 以使用准备好的参数化和绑定查询