2013-02-21 54 views
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)

回答

2

确保MySQL字段足够长以存储整个散列,它们可以根据函数变长。如果将哈希插入数据库时​​太短,它将被无声地截断以适应,并且这将使得检查密码以防止哈希失败。

相关问题