1

登记:

    $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)

4

1 回答 1

2

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

于 2013-02-21T20:35:52.353 回答