完成学校作业,这可能是一个微不足道的问题。
用户可以在我的"网站"上创建帐户。我使用password_hash()
存储密码。所以,在登录页面我使用
$hash = password_hash($password, PASSWORD_DEFAULT);
其中$password
是用户在表单中输入的密码。
此时一切正常,保存了哈希密码(我有255个字符的限制,因此大小没有问题)。但是,当我在登录表单中想要使用password_verify()
时,我遇到了问题。一个小代码片段:
$email = $_POST["email"];
$password = $_POST["password"];
$sql = "SELECT password FROM user WHERE email = $email";
$result = mysqli_query($conn, $sql);
if (password_verify($password, $result))
{
echo 'Successful!';
}
else
{
echo 'Unsuccessful!';
}
在这种情况下, $result
是我数据库中的哈希密码。
当我var_dump($result)
时,我得到bool(false)
。我只是误解了这些功能,还是我搞砸了我的查询?
答案 0 :(得分:2)
尝试这样的事情:
$sql = "SELECT password FROM user WHERE email = '$email'";
$query = mysqli_query($conn, $sql);
$result = mysqli_fetch_assoc($query);
$hash = $result['password'];
if (password_verify($password, $hash))
{
echo 'Successful!';
}
else
{
echo 'Unsuccessful!';
}