这在本地主机上运行良好,但当我将其上传到Web服务器上时,它开始给我一个错误。实际上这并不是错误,但它显示了一个page is not working. Page is currently unable to handle this request.
。它显示在我的changepassword.php页面上。我真的不知道该怎么办?
$sql=("SELECT * FROM profile WHERE username='$user_check'");
$db_check=$db->query($sql);
if(password_verify($old_pwd,$db_check->fetch_assoc()['password'])){
...
}
else{
$error = "Old password is incorrect.";
}
我试过
$sql=("SELECT * FROM profile WHERE username='$user_check'");
$db_check=$db->query($sql);
$row = $db_check;
if(password_verify($old_pwd,$row['password'])){
....
}
但它给了我一个致命的错误
Fatal error: Cannot use object of type mysqli_result as array
您可以使用fetch_assoc()来获取行。
尝试以下代码:
$sql=("SELECT * FROM profile WHERE username='$user_check'");
$db_check=$db->query($sql);
$row = $db_check->fetch_assoc();
if(password_verify($old_pwd,$row['password'])){
....
}
我修复了它。首先,如果你的PHP版本低于5.5,并且你在散列密码时使用password_hash(),那么你已经包含了这个库,这样你的password_hash
函数就可以工作了。
我无法查看我的changepassword.php页面的原因是我在我的条件下使用了错误的语句。所以我改成了这种方式,现在它起作用了。
$sql=("SELECT * FROM profile WHERE username='$user_check'");
$db_check=$db->query($sql);
$row = $db_check->fetch_assoc();
if(password_verify($old_pwd, $row['password'])){
...
}