1

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

这是代码:

控制器1

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

1 回答 1

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();
        }
    }
于 2013-09-27T16:02:25.190 回答