Я пытаюсь создать функцию входа в проект Codeigniter, извлекая данные из имени пользователя и пароля из формы и сравнивая ее с базой данных. Однако с этим текущим кодом я получаю сообщение с отрицательными результатами (эхо "плохо" - только для тестирования), хотя я использую правильную комбинацию имени пользователя и пароля в форме входа. У меня есть отдельная функция для страницы входа.
На данный момент у меня нет сообщений об ошибках. Любая помощь или руководство для получения этой работы будет очень признательна.
контроллер
public function user_login()
{
$user_name = $this->input->post('user_name');
$password = $this->input->post('password');
$data = array(
'user_name' => $user_name,
'password' => hash('sha256' , $password . 'SALT')
);
$result = $this->user_model->login($data);
if($result == TRUE){
$sess_array = array(
'user_name' => $this->input->post('user_name')
);
} else
{
echo 'bad';
}
}
Модель
public function login($data)
{
$condition = "user_name =" . "'" . $data['user_name'] . "' AND " . "password =" . "'" . $data['password'] . "'";
$this->db->select('*');
$this->db->from('users');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() == 1) {
return true;
} else {
return false;
}
}
Ваша модель может быть упрощена.
public function login($data)
{
$query = $this->db->get_where('users', $data);
return $query->row();
}
А затем в вашем контроллере:
//Stuff
$result = $this->user_model->login($data);
if($result)
//Foo
else
//Bar
Модель:
$q = $this->db->get_where('users', array(
'user_name' => $data['user_name'],
'password' => $data['password']
));
if (count($q->result())>0) {
return true;
}
else {
return false;
}