我正在使用 Andrew Moore 先生的散列用户密码的方法(How do you use bcrypt for hashing passwords in PHP?)。我所做的是我有一个注册页面,它使用
$bcrypt = new Bcrypt(12);
$pass = $_POST['password']; //register password field
$hash= $bcrypt->hash($pass);
// then inserts $hash into database with users registered email (I've checked my mysql database and it indeed has an hashed item
然后我有一个登录页面,由电子邮件和密码字段组成。我的想法是电子邮件地址在我的数据库中是唯一的。所以考虑到这一点,我制作了一个脚本,它首先检查用户的电子邮件地址,然后如果有一个现有的,用这个验证哈希密码
$bcrypt = new Bcrypt(12);
$email = $_POST['email']; //from login email field
$pass_l = $_POST['password']; // from login password field
$hash_1= $bcrypt->hash($pass_1);
$chk_email= $dbh->prepare("SELECT password FROM table WHERE email = ?");
$chk_email -> execute(array($email));
while($row = $chk_email->fetch(PDO::FETCH_ASSOC)){
$chk_pass = $row['password']; //inside a while loop to get the password
$pass_isGood = $bcrypt->verify($hash_1, $chk_pass);
var_dump($pass_isGood); // I'm getting false
}
我不确定我做错了什么,我应该是真的。我已经将我的表域设置为text
甚至varchar(256)