PHP

时间:2015-05-22 08:51:21

标签: php mysql

完成学校作业,这可能是一个微不足道的问题。

用户可以在我的"网站"上创建帐户。我使用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)。我只是误解了这些功能,还是我搞砸了我的查询?

1 个答案:

答案 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!';
}
  • 你没有取得结果。
  • 如果您将变量放在一个字符串的查询中,则必须使用''引号。