Моя проблема в том, что я использую CodeIgniter.Я создал панель администратора, которую я использую для создания пользователей и паролей.Я использую password_hash перед отправкой их в базу данных (фактически, в базе данных я вижу хешированный пароль).Проблема в том ... Когда я пытаюсь войти, это не так.Я могу получить доступ только с учетной записью администратора, которую я создал до того, как начал использовать CodeIgniter.Я могу войти с учетной записью администратора, но не с учетными записями, созданными с помощью панели администратора.Я попытался использовать очень простой php-файл (вне CI), чтобы скопировать и вставить хэш в одно из полей пользователя в моей базе данных, и это сработало.Я не понимаю, почему это не работает в CodeIgniter.Вот часть моего кода:
public function insert_user($username, $passw, $perm){
$hashed_pass = password_hash($passw, PASSWORD_DEFAULT);
$data = array(
"username" => $username,
"passw" => $hashed_pass,
"perms" => $perm
);
$this->db->insert('usuarios', $datos);
}
Приведенная выше функция корректно вставляет данные в базу данных.Я вижу, что пароль хэширован, но когда я пытаюсь войти в систему с созданными пользователями из панели администратора, он просто не работает (но работает с учетной записью администратора, и все они используют одну и ту же функцию для входа в систему).
public function login($username, $password){
$query = $this->db->query("select passw, perms from users where username = '".$username."'");
$result = $query->row();
$p_hashed = $result->passw;
$perms= $result->perms;
if(password_verify($password, $p_hashed)){
$info= array(
"is_valid" => true,
"username" => $username,
"perms" => $perms
);
return $info;
}
else {
$info= array(
"is_valid" => false,
"username" => ""
);
return $info;
}
}
Я проверил базу данных и кодировку CI, все это utf8.Я не понимаю, почему не работает ... Я был бы признателен за любую помощь.
PS: если имя переменных не коррелированы или не совпадают, потому что я перевел его на английский (яне носитель английского языка, поэтому я не использую английский в этом проекте).
Спасибо.
РЕДАКТИРОВАТЬ
Я изменилкод для использования md5 вместо password_hash, и у меня та же проблема.
РЕДАКТИРОВАТЬ 2
Я обнаружил проблему: я сравнивал пароль 2 (первыйодин и подтвердить пароль).После этой комбинации я передал данные в модель ... Но переменная пароля, который я отправлял в модель, была новой переменной без данных.Я хэшировал неинициализированную переменную.