获取未定义的索引:在CodeIgniter中注销后的login_session

时间:2019-02-07 05:31:16

标签: php session codeigniter-3

我正在使用CodeIgniter。 我正在登录页面上。登录没有问题。我在登录会话时遇到问题。

我设置了是否没有登录会话,那么它将在登录页面上重定向,或者在仪表板页面上重定向。

现在,我尝试使用以下代码,但无法正常工作。我收到错误消息:“消息:未定义索引:login_session”

我做的是,我登录了门户(现在我在仪表板页面上),然后仅复制URL并将其粘贴到下一个选项卡上。因此它向我显示了我的仪表板页面正确。现在,我从第二个选项卡注销,然后刷新第一个选项卡,然后显示Undefined index: login_session。因此,根据第一个选项卡,还可以在登录页面上重定向。对吗?

有时我也在门户网站上,几秒钟后我就退出会话。

public function index()
  {
    $this->checkLogin();
  }

public function checkLogin(){
  if(!($this->session->userdata('login_session')))
    {
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        $this->form_validation->set_rules('customer_id', 'Username', 'trim|required|min_length[12]');
        $this->form_validation->set_rules('member_password', 'Password', 'trim|required');

        if ($this->form_validation->run() == FALSE)
                {
                        $this->load->view('member/login');
                 }
                 else
                {

                    $custid = $this->input->post('customer_id');
                    $password = $this->input->post('member_password');
                    $result=$this->Member_model->check_password($custid,$password);//varifying password
                   if ($result) {
                        //creating session

                            $login_emp_session = array('firstname' => $result->first_name,'lastname' => $result->last_name);
                            $this->session->set_userdata('login_session',$login_emp_session);//set the session 
                            redirect("Member_controller/dashboard");

                        }


                   else{
                    $this->session->set_flashdata('invalid_password', 'Invalid username and password');
                    $this->load->view('member/login');
                    //echo "wrong details";
                  }

              }

 }
 else
    {
        //echo "Already";
     redirect("Member_controller/dashboard");//calling employee register

    }
}

注销代码

function logout()

  {  
      $this->session->unset_userdata('login_session');
      $this->session->sess_destroy();
      redirect('Member_controller/index');
  }

1 个答案:

答案 0 :(得分:0)

从第二个选项卡注销时,这意味着您从浏览器中破坏了登录会话。这就是为什么刷新时在第一个选项卡上显示该错误的原因。为避免该错误,请使用:

if(!$this->session->userdata('login_session'))
{
   redirect to login
}

//Dashboard

已更新:

public function index()
{
    if(!$this->session->userdata('login_session'))
    {
      $this->checkLogin();
    }
    else
    {
      redirect("Member_controller/dashboard");//calling employee 
    }
}

  public function checkLogin()
  {
    if($this->input->server('REQUEST_METHOD')=='POST')
    {
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        $this->form_validation->set_rules('customer_id', 'Username', 'trim|required|min_length[12]');
        $this->form_validation->set_rules('member_password', 'Password', 'trim|required');

        if ($this->form_validation->run() == FALSE)
        {
                $this->load->view('member/login');
        }
         else
        {

            $custid = $this->input->post('customer_id');
            $password = $this->input->post('member_password');
            $result=$this->Member_model->check_password($custid,$password);//varifying password
            if ($result) 
            {
                $login_emp_session = array('firstname' => $result->first_name,'lastname' => $result->last_name);
                $this->session->set_userdata('login_session',$login_emp_session);//set the session 
                redirect("Member_controller/dashboard");

            }
            else
            {
                $this->session->set_flashdata('invalid_password', 'Invalid username and password');
                $this->load->view('member/login');
           }
        }

    }
    else
    {
        $this->load->view('member/login');
    }
  }