我向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)
答案 0 :(得分:1)
你混合了两个扩展,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";
}
答案 1 :(得分:0)
尝试一下:
$enteredUser = mysqli_real_escape_string($con,$_POST["username"]);
$enteredPass = mysqli_real_escape_string($con,$_POST["password"]);
$sql = "SELECT * FROM `user` WHERE `username` = '$enteredUser'";
$result = $con->query($sql);
if ($result->num_rows === 1) {
$row = $result->fetch_array(MYSQLI_ASSOC);
if (password_verify($enteredPass, $row['passhash']))
{
echo "Success";
}
else {
echo "Sorry";
}
答案 2 :(得分:0)
我确实用一个简单的while循环解决了我自己的问题,我想它会正常工作,感谢大家的意见:
$passHash = '';
while ($row = mysqli_fetch_array($query)) {
$passHash .= $row["passhash"];
}