Как установить идентификатор пользователя, вошедшего в систему, в сеансе (CodeIgniter)?

#codeigniter

#codeigniter

Вопрос:

У меня возникли проблемы с получением идентификатора пользователя, вошедшего в систему, из базы данных…

Это мой код контроллера :

         function validation(){

    $this->load->model('users_model');
    $query = $this->users_model->validate();

    if ($query){
        $this->users_model->get_userID($this->input->post('email'));
        $data = array( 
        'email' => $this->input->post('email'),
        'is_logged_in' => true,
        'user_id' => $user_id
        );

        $this->session->set_userdata($data);            
        redirect('home');
    }
    else {
        $this->index();
    }
}
  

Это моя модельная функция, в которой я возвращаю идентификатор пользователя из базы данных:

        function get_userID($email){
    $this->db->where('email',$email);
    $query = $this->db->get('users');       
    foreach ($query->result() as $row)
        {
            $user_id = $row->id;
        }
        return $user_id;

}
  

Все работает идеально, за исключением того, что $user_id возвращает пустой… Что я делаю не так?

Ответ №1:

Попробуйте:

 $user_id= $this->users_model->get_userID($this->input->post('email'));
  

Комментарии:

1. @Rick Rhodes Вы должны принять вопрос. Пожалуйста, найдите серую галочку под его ответом и нажмите на нее. Он должен быть зеленым. Если вы не отметите ответ как правильный в ближайшее время, вы не сможете задать вопрос здесь.

Ответ №2:

попробуйте изменить функцию модели на это —

 function get_userID($email){
  $this->db->where('email',$email);
  $query = $this->db->get('users')->row_array(); // retrieves only first-row.
  return $query['id'];
}
  

В контроллере функция нуждается в небольшой модификации следующим образом —

 function validation(){

    $this->load->model('users_model');
    $query = $this->users_model->validate();

    if($query){
        //$user_id was not assigned before :)
        $user_id = $this->users_model->get_userID($this->input->post('email')); 
        $data = array( 
        'email' => $this->input->post('email'),
        'is_logged_in' => true,
        'user_id' => $user_id
        );

        $this->session->set_userdata($data);            
        redirect('home');
    }
    else {
        $this->index();
    }
}
  

надеюсь, это поможет,

блог Фейсала Ахмеда / сайт

Комментарии:

1. кстати, еще раз взглянув на свой код, вы также должны проверить функцию validate(), потому что, если она не возвращает TRUE, функция модели никогда не будет доступна.