Это первый раз, когда я использую встроенные функции PHP в моем приложении. Я сохранил пароль пользователя, используя следующий код:password_verify() или сравнение хэшированного пользовательского ввода с сохраненным паролем в PHP?
password_hash($this->input->post('password'),PASSWORD_BCRYPT);
И результат сохраняется в базе данных. Теперь я хочу проверить пользователя в процессе входа в систему.
Мой вопрос здесь. У меня есть 2 варианта:
Метод 1
$sql = "SELECT id,password FROM tbl_members WHERE email = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]'));
if ($result->num_rows()) {
$row = $result->row();
$hash = $row->password;
if (password_verify($this->input->post('password'), $hash)) echo 'Successful login';
}
Метод 2
$hash = password_hash($this->input->post('password'),PASSWORD_BCRYPT);
$sql = "SELECT id FROM tbl_members WHERE email = ? AND password = ? LIMIT 1";
$result = $this->db->query($sql,array('[email protected]',$user_hashed_password));
if ($result->num_rows()) echo 'Successful Login';
Какой метод является более подходящим для процесса входа в систему?
Один из них уязвим для временных атак, а другой нет. API предоставляется по какой-либо причине. Используй это. – PeeHaa
@PeeHaa На самом деле ... один * работает *, а другой нет ... – deceze
password_hash более обеспечен для меня, – Beginner