password_verify не будет работать после сохранения в базе данных

Я искал и читал около 50 сообщений о моей проблеме, но до сих пор не могу понять свою проблему, поэтому я здесь.

Проблема: password_verify() возвращает false, даже если пароль правильный.

Вот как я храню пароль в db (При регистрации и редактировании профиля)

 $hashedPassword = password_hash($password, PASSWORD_DEFAULT); 

И мой последний password_verify() (я пробовал много примеров, никто не работает, и теперь я сижу здесь с еще не работающим кодом)

 public function doLogin($username,$password){ try{ $stmt = $this->conn->prepare("SELECT id, username, password FROM users WHERE username=:username"); $stmt->execute(array(':username'=>$username)); $userRow=$stmt->fetch(PDO::FETCH_ASSOC); if (password_verify($password, $userRow['password'])) { $_SESSION['user_session'] = $userRow['id']; $_SESSION["result"]='You have succesfully logged in your profile!'; return true; }else{ return false; } } catch(PDOException $e) { echo $e->getMessage(); } } 

Поле моей базы данных составляет 25 символов. Что здесь не так?

Related of "password_verify не будет работать после сохранения в базе данных"

В соответствии с руководством для password_hash()

[…] Поэтому рекомендуется сохранять результат в столбце базы данных, который может расширяться до 60 символов (255 символов будут хорошим выбором)

Это означает, что password_verify() будет терпеть неудачу, если у вас есть столбец длиной 59 или менее. Поскольку MySQL будет усекать хешированную строку, когда вы вставляете хешированный пароль, ничего не говоря.

Решение состоит в том, чтобы установить столбец password длиной до 60 или выше – руководство предлагает установить его на 255, так что просто сделайте это.

Любые уже сохраненные пароли не будут фиксировать свои хэши, поэтому их необходимо обновить или повторно вставить.