Php 错误:使用codeigniter登录和注销时
登录和注销工作正常,但在从页面注销后,我仍然能够访问该页面,例如,在url中,如果我使用codeigniter\u try/index.php/Home/backend,它将显示不应该出现的页面,我的意思是,它应该仅在我使用用户名和密码登录时显示。我在这里面临的问题是什么?有人能指导我吗 这是我的Controller.phpPhp 错误:使用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
//-------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');
}