将一个以上的用户添加到数据库后,CodeIgniter会话丢失

时间:2013-09-25 20:57:17

标签: php mysql codeigniter session

我正在使用CodeIgniter。但是,当我使用会话时,出现了问题。 问题是: 我尝试在会话中存储user_email。然后我重定向到另一个控制器。在这种情况下,它完美地工作。 但是,当我向数据库添加一个新用户时,我尝试登录,存储会话,并重定向到另一个控制器,会话丢失。 有人可以帮我解决问题吗?提前致谢

以下是代码:

cotroller1

public function make_session($parameter)
{
    $this->session->set_userdata('user', $parameter );
}

// Fungsi untuk menggenerate page login
public function do_login()
{
    // Memanggil page untuk proccess login 
    // grab user input
    $email = $this->input->post('user_email');
    $password = $this->input->post('user_password');

    // Menyimpan variable first name    
    $this->load->model('login_model');
    $data['user'] = $this->login_model->get_user( $email, $password );

    // Set session daripada user
    if( $data['user'] != NULL )
    {
        foreach ($data['user'] as $ad):
            $this->make_session( $ad['user_email'] );
        endforeach;
    }

    $this->index();
}

控制器2

public function index(){
        $data['session_u_email'] = $this->session->userdata('user');
        $this->load->model('main_model');

        // Mendapatkan nama dari si user
        $data['fname'] = $this->main_model->get_user_fname( $data['session_u_email'] );

        // Mendapatkan role dari user
        $data['role_id'] = $this->main_model->get_role_id( $data['session_u_email'] );

        // Mendapatkan user id dahulu
        $this->load->model('input_model');
        $id = $this->input_model->get_user_id( $data['session_u_email'] );

        // Setelah dapat id, nendapatkan jumlah input dari si user
        $data['input_number'] = $this->main_model->get_input_number( $id );

        //Mendapatkan total agen
        $data['tot'] = $this->main_model->get_total_agen();
        $data['date'] = date("F j, Y, g:i a");

        $this->load->view('template/header', $data);
        $this->load->view('main_v', $data);
        $this->load->view('template/footer');


}

模型

public function get_user($u_email, $u_password)
        {
            // Prep the query
            $this->db->where('user_email', $u_email);
            $this->db->where('user_password', sha1($u_password));

            // Run the query
            $query = $this->db->get('user');

            if($query->num_rows() == 1)
            {
                $query->result_array();
            }
        }

1 个答案:

答案 0 :(得分:0)

你的模型根本不返回任何内容 - 这与返回null相同,这导致没有创建会话,因为找不到用户。

您应该同样为模型添加一个回报:

public function get_user($u_email, $u_password)
    {
        // Prep the query
        $this->db->where('user_email', $u_email);
        $this->db->where('user_password', sha1($u_password));

        // Run the query
        $query = $this->db->get('user');

        if($query->num_rows() == 1)
        {
            return $query->result_array();
        }
    }