我正在使用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();
}
}
答案 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();
}
}