Codeigniter Логин пользователя

0

Я пытаюсь создать функцию входа в проект 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;
        }
  } 
  • 1
    если вы уверены, что ($ query-> num_rows () == 1) перенастроит некоторые записи в вашей модели, то вы можете попробовать использовать if ($ result) вместо if ($ result == TRUE) в ваших контроллерах
Теги:
codeigniter
login

2 ответа

0

Ваша модель может быть упрощена.

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
0

Модель:

$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;
}
  • 3
    Отзыв на комментарий: Пожалуйста, позаботьтесь о форматировании кода (отступ и комментарии) и уделите время, чтобы объяснить свой ответ и как это исправить проблему оригинального плаката.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню