我向php发送密码以与存储在数据库中的哈希值进行比较。

我的PHP是:

$enteredUser = $_POST["username"];
$enteredPass = $_POST["password"];
$query = mysqli_query($con, "SELECT passhash FROM user WHERE `username` = '$enteredUser'");
$passHash = mysql_result($query, 0);
if(password_verify($enteredPass, $passHash)){
    echo "success";
}else{
    echo "failure";
}


我也尝试使用mysqli_fetch_array(),但仍然无法正常工作。有人知道为什么这行不通吗?在此先感谢任何可以提供帮助的人。 (附带说明,$passHash返回null)

最佳答案

您正在混合两个扩展,mysqli和mysql-mysqli_query,然后是mysql_result

您也可以使用SQL注入,并且应该在将POST输入直接传递给MySQL之前对其进行清理。

mysqli_query返回一个结果对象,然后您需要从该对象获取结果。

mysqli_fetch_row将返回一行。

$enteredUser = $_POST["username"];
$enteredPass = $_POST["password"];
//...
$resultset = mysqli_query($con, "SELECT passhash FROM user WHERE `username` = '$enteredUser'");
$result = mysqli_fetch_row($resultset);
if(password_verify($enteredPass,$result[0])){
    echo "success";
}else{
    echo "failure";
}

08-06 22:20