Codeigniter - 获取其他数据库信息并放入会话

时间:2017-01-05 06:04:42

标签: php codeigniter session

我是CodeIgniter的新手,我创建了一个登录系统,我在这里有一个会话。在这里,我可以通过使用POST并将其放在会话数组中来获取帐户的用户名。但是,我还希望从数据库中获取其他数据,例如其名字,姓氏等,并将其放入会话中。为了让我实现它,正确的语法是什么?

控制器:

function validate_login()
{
    $this->load->model('model_accounts');
    $valid = $this->model_accounts->validate();
    $isAdmin = $this->model_accounts->check_role();
    $isActive = $this->model_accounts->check_active();

    if($valid && $isAdmin && $isActive) // Active Admin
    {
        $data = array(
            'username' => $this->input->post('username'), 
            'password' => $this->input->post('password'),
            'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        redirect('admin_ticketing');
    }
    else if(($valid && $isActive) && $isAdmin == false)  // Active User
    {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password'),   
            'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        redirect('user_home');
    }
    else if(($valid && $isAdmin) && $isActive == false)  //Deactivated Admin
    {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password'),
            'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        redirect('login/admindeact');
    }
    else if($valid && ($isActive && $isAdmin) == false) //Deactivated User
    {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password'),
            'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        redirect('login/userdeact');
    }
    else if($valid == false) //Invalid Account
    {
        $data['main_content'] = 'view_login';
        $data['message'] = "The username and password you entered did not match our records. Please double-check and try again. ";
        $this->load->view('includes/login_template', $data);
    }
}

型号:

function validate() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $query = $this->db->get('accounts');

    if($query->num_rows() == 1)
    {
        return true;    
    }
    else
    {
        return false;
    }
}

function check_role() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $this->db->where('role', 1);
    $query = $this->db->get('accounts');

    if($query->num_rows() == 1)
    {

        return true;    
    }
    else 
    {
        return false;
    }
}

function check_active() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $this->db->where('isActive', 1);
    $query = $this->db->get('accounts');

    if($query->num_rows() == 1)
    {
        return true;    
    }
    else 
    {
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

从控制器完成页面重定向并在模型上设置会话,如下所示:

控制器:

function validate_login()
{
    $this->load->model('model_accounts');
    $valid = $this->model_accounts->validate();
    $isAdmin = $this->model_accounts->check_role();
    $isActive = $this->model_accounts->check_active();

    if($valid && $isAdmin && $isActive) // Active Admin
    {
        redirect('admin_ticketing');
    }
    else if(($valid && $isActive) && $isAdmin == false)  // Active User
    {

        redirect('user_home');
    }
    else if(($valid && $isAdmin) && $isActive == false)  //Deactivated Admin
    {

        redirect('login/admindeact');
    }
    else if($valid && ($isActive && $isAdmin) == false) //Deactivated User
    {

        redirect('login/userdeact');
    }
    else if($valid == false) //Invalid Account
    {
        $data['main_content'] = 'view_login';
        $data['message'] = "The username and password you entered did not match our records. Please double-check and try again. ";
        $this->load->view('includes/login_template', $data);
    }
}

型号:

function validate() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $query = $this->db->get('accounts');
    $result = $query->row();

    if($query->num_rows() == 1)
    {
     $data = array(
            'username' => $result->username, 
            'password' => $result->password,
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        return true;    
    }
    else
    {
        return false;
    }
}

function check_role() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $this->db->where('role', 1);
    $query = $this->db->get('accounts');
    $result = $query->row();

    if($query->num_rows() == 1)
    {
         $data = array(
            'username' => $result->username, 
            'password' => $result->password,
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        return true;    
    }
    else 
    {
        return false;
    }
}

function check_active() 
{
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', $this->input->post('password'));
    $this->db->where('isActive', 1);
    $query = $this->db->get('accounts');
    $result = $query->row();

    if($query->num_rows() == 1)
    {
        $data = array(
            'username' => $result->username, 
            'password' => $result->password,
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        return true;    
    }
    else 
    {
        return false;
    }
}