php - 错误:使用 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');
}
解决方案
希望对你有帮助 :
你的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
推荐阅读
- graphics - MeshLab“计算点集的法线”中使用的算法是什么
- javascript - 选择多个输入反应不更新 Safari 移动设备中的值
- bash - Fedora 34:将多个命令粘贴到 bash 终端行为更改中
- python - 如何将二维列表传递给 Treeview(Tkintker)?
- java - Quarkus Mongodb 在本机构建中更改流 NullPointerException
- ruby-on-rails - Mac OS X (Big Sur) capybara-webkit 安装问题
- java - Spring security 5 - java配置中的intercept-url requires-channel
- python - 用python绘制直方图
- html - CSS 元素没有正确对齐
- scala - play-json OWrites 用于 trait 中由同名对象实现的类