为什么我的登录不起作用?我的哈希方法有错误吗


Why is my log in not working? Does my hashing method have an error in it/is it correct?

寄存器:

    $hashed_password = password_hash($password, PASSWORD_BCRYPT);
    $query = "INSERT INTO users(username,email,password) VALUES('" . $username . "','" . $email . "','" . $hashed_password . "')";
    mysql_query($query);

验证:

   $query = "SELECT id,username,password FROM users WHERE email='" . $email . "'";
   $row = mysql_fetch_assoc(mysql_query($query));
   if (password_verify($password, $row["password"])) {

忽略我使用的即将弃用的方法,我很快就会更改这些方法。

为什么不起作用?它检测到用户名的密码错误。

我使用这个库来允许以前版本中的PHP 5.5函数:https://github.com/ircmaxell/password_compat

(是的,我可以使用这个函数,我使用的是PHP 5.3.15)

确保MySQL字段足够长以存储整个哈希,它们可能会变长,具体取决于函数。如果在将哈希插入数据库时太短,它将被静默地截断以适应,这将导致根据哈希检查密码失败。