PHP - проблема с паролем
Я почесал голову над этим более 2 часов. Я исследовал статьи по stackoverflow, в том числе:
Проблема с Bcrypt не проверяется правильно
php password_hash и password_verify не совпадают
`password_verify` вызов вернул false для правильного пароля
И я не смог исправить мою проблему. Я был бы признателен за некоторые советы о том, насколько я идиот:
Функция для вставки данных в базу данных MySQL:
function insertUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"INSERT INTO user(username, userpassword) VALUES (?,?);");
$username = $userObj->getUsername();
$password = password_hash('testing1234', PASSWORD_BCRYPT);
$query->bind_param('ss', $username, $password);
}
Проверка входа пользователя путем извлечения данных из MySQL:
function findUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"SELECT userid, userpassword
FROM user
WHERE username=?");
$pass = 'testing1234'
$query->bind_param('s', $userObj->getUsername());
$query->execute();
$query->bind_result($userid, $hash);
while ($query->fetch()) {
if (password_verify($pass, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
}
}
Когда бегу я получаюНеправильный пароль.'
Когда я делаю ниже, не вставляя в базу данных, то получение:
$hash = password_hash('testing1234', PASSWORD_BCRYPT);
if (password_verify('testing1234', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
Я получил 'Пароль действителен!
Я полагаю, что моя проблема связана с одинарными и двойными кавычками и интерпретацией знака доллара ($) в поле пароля как переменной вместо литерала (как предлагает одна из статей) при хранении / извлечении из базы данных MySQL - однако У меня нетМне не повезло в решении. Ниже приведено хеш-значениеtesting1234' :
$ 2y $ 10 $ 1 / oQEuYX67n.U3usxH.7tenNq7hT2dKyBSIZsy5xR3W