我试图创建一个登录系统,因此我在注册password_hash($password,PASSWORD_BCRYPT)函数时加密了密码。但是,在比较用户提供的登录密码与存储在数据库中的加密密码时,我遇到了困难。
这是没有安全功能的代码,我试图比较登录密码与注册密码。如有任何帮助,我将不胜感激。
$loginpassword=$_POST['password'];
$con=mysqli_connect($ip,$username,$dbpass,$dbname);
$regpassword="SELECT password FROM customerdb WHERE username='$username'";
$result=mysqli_query($con,$regpassword);
$value=mysqli_fetch_fields($result);
if(password_verify($loginpassword,$value))
{
session_start();
header(.........);
exit();
}
注:我使用php 5.4。因此,我包含了来自https://github.com/ircmaxell/password_compat
mysqli_fetch_fields
方法返回一个关于数据库中列的元数据数组,而不是值。
通过mysqli_fetch_array
获取密码值。您还需要检查从数据库返回的行。
$row = mysqli_fetch_array($result, MYSQLI_NUM);
if ($row) {
$value = $row[0];
// Verify...
} else {
// Invalid username
}