Результат возвращает 0 при проверке пароля

Я нахожусь в процессе изучения того, как использовать инфраструктуру CI, и в настоящее время я работаю над формой входа пользователя. Еще не создали регистрацию пользователя, поэтому я вручную добавляю учетные данные в базу данных. Поскольку я тестирую все локально, я решил попробовать crypt без соли, что, вероятно, не лучший метод. Я использую проверку формы и обратный вызов, чтобы сравнить данные формы с информацией в базе данных.

Вот фрагмент из контроллера пользователя:

function password_check($password) {

$username = $this->input->post('username', TRUE);

$password = Modules::run('security/create_hash', $password);

$this->load->model('mdl_users');
$result = $this->mdl_users->password_check($username, $password);

if ($result == FALSE) {
//$this->form_validation->set_message('password_check', 'Please login using the correct credentials!');
//return FALSE;
echo $password;
echo '<br/><br/>';
echo $result;
echo '<br/><br/>';
}
else {
return TRUE;
}
}

Я повторил пароль, и результат тестирования и пароль отображаются как хешированные.

Вот метод password_check:

function password_check($username, $password) {
$table = $this->get_table();
$this->db->where('username', $username);
$this->db->where('password', $password);
$query=$this->db->get($table);
$num_rows = $query->num_rows();
return $num_rows;
if ($num_rows>0) {
return TRUE;
} else {
return FALSE;
}
}

Я уверен, что причина этого не в том, что пароль в БД обрабатывается как буквенная строка, а не как хешированный, но я не уверен, как можно сравнить его как хеш.

0

Решение

Вы можете сделать что-то вроде этого: получить пользователя из модели, а затем проверить сохраненное значение из пароля с хэшированным значением от пользователя. Если бы вы использовали md5, это выглядело бы примерно так.

контроллер

$this->load->model('user_model');

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

$user = $this->user_model->get_user_through_name($name);
if($user['password'] == md5($password)) {
//logged in
} else {
//wrong password
}
}

модель

public function get_user_through_name($name) {
$query = $this->db->get_where('Users', array(
'username' => $name
));
return $query->row_array();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]