在codeigniter模型视图控制器中的会话


Session in codeigniter model View Controller

登录成功后再重定向到主页。

我在登录和查看页面中设置会话后,当我刷新同一页面时,它会重定向到登录页面,原因是什么,请提供解决这个问题的方法?

控制器

public function login() {
    $email = $this->input->post('email');
    $password = md5($this->input->post('password'));
    $result = $this->search_model->login($email, $password);
    if($result !='') {
        $this->session->set_userdata('user_id', $email);
        $seid = $this->session->userdata('user_id');
    }
    if ($seid=='') {
        //echo ($seid);
        $this->index();
    } else {
        $this->view();
    }
} 

public function view() {
    $seid = $this->session->userdata('user_id');
    $data['result']=$this->search_model->getall($seid);
    $this->load->view('pagination_view',$data);
}

function login($email, $password) {   
    $this->db->where("email", $email);
    $this->db->where("password", $password);
    $query=$this->db->get("tbl_reg");
    return $query->result_array();    
}
<<p> 视图/strong>
<?php
if(!$this->session->userdata('user_id'))
{
    redirect(base_url().'search/login');
}
else
{
}
?>

两个问题,第一个是架构问题,第二个可能导致您的问题。首先,你不应该在视图中重定向。这应该在加载主页(或其他页面)的控制器中。如果你不属于那个视图,你甚至不应该进入那个视图。

第二个问题是if($result!= ")。这行不通。$result是一个数组。使用if(!empty($result))或if(count($result)!==0)或类似的东西

在pagination_view中,我不会使用重定向,而是将其放在控制器函数

public function view() {
if ($this->session->userdata('user_id') == FALSE) {
    redirect(base_url().'search/login');
} else {
    $data['result'] = $this->search_model->getall($seid);
    $this->load->view('pagination_view',$data);
}
}