Неверный пароль с использованием php pass_hash(), pass_verify()Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Неверный пароль с использованием php pass_hash(), pass_verify()

Сообщение Anonymous »

Это проект Codeigniter 3.
Сначала я сохраняю пароль при создании пользователей, используя:

Код: Выделить всё

$options = ['cost' => 10];
password_hash($data['password'], PASSWORD_DEFAULT, $options)
Это работает хорошо в течение нескольких дней, а затем внезапно, когда я вхожу в систему, он показывает

неправильный пароль

Код: Выделить всё

public function login() {
$email = trim($this->input->post('email'));
$password = trim($this->input->post('password'));

log_message('info', 'Login attempt with email: ' . $email);

$user = $this->db->get_where('users', ['email' => $email])->row();

if ($user) {
log_message('info', 'User found: ' . json_encode($user));

if (password_verify($password, $user->password)) {
// Check if rehash is needed and update the password hash if required
if (password_needs_rehash($user->password, PASSWORD_DEFAULT, ['cost' => 10])) {
$newHash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 10]);

// Logging hash update
log_message('info', 'Rehashing password for user: ' . $email);

// Update database with the new hash
$this->db->update('users', ['password' => $newHash], ['email' => $user->email]);
}

// Session setup and role-based redirection (as in your code)
// ...
} else {
log_message('error', 'Password verification failed for email: ' . $email);
$this->session->set_flashdata('error', 'Incorrect password provided. Please try again.');
redirect(base_url());
}
} else {
log_message('error', 'Email not found: ' . $email);
$this->session->set_flashdata('error', 'Email not found. Please try again.');
redirect(base_url());
}
}
Я пробовал использовать инструмент проверки php, он также показывает ложь, но при хешировании и проверке он показывает истину. Но через несколько часов он снова показывает ложь. Я изменил время завершения сеанса и надеюсь, что это не повлияет на это. И мой столбец пароля — varchar(255).
Каково решение этой проблемы? Или, если у вас есть другой стабильный хэш-код пароля, пожалуйста, помогите мне.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ord-verify
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»