Php 错误:使用codeigniter登录和注销时

Php 错误:使用codeigniter登录和注销时,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,登录和注销工作正常,但在从页面注销后,我仍然能够访问该页面,例如,在url中,如果我使用codeigniter\u try/index.php/Home/backend,它将显示不应该出现的页面,我的意思是,它应该仅在我使用用户名和密码登录时显示。我在这里面临的问题是什么?有人能指导我吗 这是我的Controller.php //-------this is Login method -------- public function login() { if($this->inpu

登录和注销工作正常,但在从页面注销后,我仍然能够访问该页面,例如,在url中,如果我使用codeigniter\u 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');
     }

通过传递会话密钥,可以使用unset_userdata将其删除

所以,注销功能将改变如下

public function logout()
{
    $this->session->unset_userdata('username');
    $this->session->unset_userdata('password');
    $this->session->unset_userdata('is_logged_in');

/*
Or

    $array_items = array('username' , 'password' , 'is_logged_in');
    $this->session->unset_userdata($array_items);
*/

    $this->session->sess_destroy();
    redirect('Home/login');
}
希望这将帮助您:

您的注销方法应如下所示:

您的后端应该是这样的:您必须在所有控制器中检查它


更多信息:

不要试图重新发明轮子。使用ion_auth。而且md5非常不安全,甚至php说soIt不起作用,sirI认为在与调用unset_userdata和sess_destroy无关的地方存在问题。我们需要查看通过会话数据处理访问的页面逻辑。它不起作用。请在主控制器中检查会话是否已登录。请检查我的更新答案。希望这能给你一些想法:公共功能后端{如果!$this->session->userdata'is_logged_'redirect'Home/login'.$this->load->view'backend'.}先生,这是有效的,但当我登录na时,它应该在同一页面上说,即使很难返回,也不应该返回。我尝试过这个,但它不起作用
public function logout()
{
    $this->session->sess_destroy();
    redirect('Home/login');
} 
public function Backend()
{ 
   if (! $this->session->userdata('is_logged_in')) redirect('Home/login'); 
   $this->load->view('backend'); 
}