如何在会话中设置登录的用户ID(CodeIgniter)?

时间:2011-10-02 05:14:52

标签: codeigniter

我遇到问题,从数据库中获取登录的用户ID ...

这是我的控制器代码:

        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();
    }
}

这是我的模型函数,我从数据库返回用户ID:

       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返回空...我做错了什么?

2 个答案:

答案 0 :(得分:4)

尝试:

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

答案 1 :(得分:0)

尝试将模型函数修改为 -

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();
    }
}

希望它有所帮助,

费萨尔艾哈迈德 blog / site