Я использую метод мистера Эндрю Мура (. Как вы используете bcrypt для хеширования паролей в 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)