首页 > 解决方案 > 错误:使用 codeigniter 登录和注销时

问题描述

登录和注销工作正常,但是,从页面注销后,我仍然能够访问该页面,例如在 url 中,如果我用作 codeigniter_try/index.php/Home/backend 它显示不应该发生的页面,我意思是说它应该只在我使用用户名和密码登录时显示。我在这里面临什么问题有人可以指导我吗?

这是我的 Controller.php

//-------this is Login method --------
public function login()
{
    if($this->input->post('login'))
    {
        $username=$this->input->post('username');
        $password=md5($this->input->post('password'));
        $query=$this->db->query("select * from login where username='".$username."' and password='$password'");
        $row = $query->num_rows();
        if($row)
        {
            $newdata=array(
                'username' => $this->input->post('username'),
                'password' => md5($this->input->post('password')),
                'is_logged_in'=>TRUE
            );
            $this->session->set_userdata($newdata);
            redirect('Home/Backend');
        }
        else
        {
            $data['error']="<h3 style='color:red'>Invalid login details</h3>";
        }   
    }

    $this->load->view('login',@$data);      
}

//---------this is Logout method --------
public function logout()
{
    $this->session->unset_userdata($newdata);
$this->session->sess_destroy();
redirect('Home/login');
}

//-------Backend page---------

     public function Backend()
   {
     $this->load->view('backend');
     }

标签: phpcodeignitercodeigniter-3

解决方案


希望对你有帮助 :

你的logout方法应该是这样的:

public function logout()
{
    $this->session->sess_destroy();
    redirect('Home/login');
} 

Backend应该是这样的:你必须在所有控制器中检查它

public function Backend()
{ 
   if (! $this->session->userdata('is_logged_in')) redirect('Home/login'); 
   $this->load->view('backend'); 
} 

更多信息:https ://www.codeigniter.com/user_guide/libraries/sessions.html#destroying-a-session


推荐阅读