Как использовать метод php password_hash () ..?

Я получаю пароль не совпадает, когда я вхожу в систему, когда пользователь регистрируется, я сохраняю пароль как

$password = password_hash($this->input->post('password'), PASSWORD_BCRYPT); 

когда логин пользователя я проверяю пароль как это,

  $hash = password_hash($password, PASSWORD_BCRYPT); $this->db->select('password'); $this->db->from('usersdetails'); $this->db->where('email', $email); $this->db->limit(1); $query = $this->db->get(); $passwordcheck = $query->row()->password; if (password_verify($passwordcheck, $hash)) { return true; } else { return false; } 

НО он всегда возвращает пароль не соответствует..why ????? Любая помощь высоко ценится…

Solutions Collecting From Web of "Как использовать метод php password_hash () ..?"

Вы должны проверить необработанный неподтвержденный пароль, так как password_verify() выполняет повторное хеширование необработанного пароля с помощью хэш-процедуры, используемой при создании хешированного пароля.

Если вы посмотрите на результат password_hash() в хеше хранится информация о том, какая хэш-процедура была использована для создания этого хеша, и как он был сгенерирован

 $password = 'FredsTheMan'; $hash = password_hash($password, PASSWORD_BCRYPT); if (password_verify($password, $hash)) { return true; } else { return false; } 

Еще одна распространенная ошибка в этой области – не дать столбцу, который вы используете в таблице базы данных, достаточно символов, чтобы сохранить полный результат хэша

Хэш, созданный с использованием PASSWORD_BCRYPT, составляет 60 символов

 $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K 

Остерегайтесь, когда другие хеши будут предоставлены в меха, они могут привести к хешированию более 60 символов

Короче говоря, код должен быть

 $this->db->select('password'); $this->db->from('usersdetails'); $this->db->where('email', $email); $this->db->limit(1); $query = $this->db->get(); $pwd_from_db = $query->row()->password; if (password_verify($this->input->post('password'), $pwd_from_db)) { return true; } else { return false; }