Php CodeIgniter未正确重定向
我试图实现只有登录用户才能访问的基本部分。我覆盖了CI_控制器,如下所示:Php CodeIgniter未正确重定向,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我试图实现只有登录用户才能访问的基本部分。我覆盖了CI_控制器,如下所示: //file created in application/core/MY_Controller.php class Auth_Controller extends CI_Controller { function __construct(){ parent::__construct(); $this->load->library('session');
//file created in application/core/MY_Controller.php
class Auth_Controller extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('user_logged') !== null){
redirect(base_url() . 'dashboard');
die();
} else {
redirect(base_url() . 'auth/login');
die();
}
}
class Dashboard extends Auth_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('dashboardView');
}
}
然后,我从Auth_Controller扩展所有其他仅对登录用户可用的控制器,如下所示:
//file created in application/core/MY_Controller.php
class Auth_Controller extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('user_logged') !== null){
redirect(base_url() . 'dashboard');
die();
} else {
redirect(base_url() . 'auth/login');
die();
}
}
class Dashboard extends Auth_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('dashboardView');
}
}
但登录成功后,它不会重定向到dashboardView
有人知道到底发生了什么吗?在代码的这一部分中,您将无限重定向到仪表板控制器:
if ($this->session->userdata('user_logged') !== null){
redirect(base_url() . 'dashboard');
die();
}
如果用户未登录,则使用此重定向至登录表单:
class Auth_controller extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->library('session');
// If the user is not logged in
if ($this->session->userdata('user_logged') === null){
// Redirect to http://yoursite/auth/login
// No need for the base_url function, redirect does it for you
redirect('auth/login');
// You don't have to exit/die, redirect() already does that
}
}
}
意见
如果我检查空值,将像这样使用!=无效的但在CI中,最好选择检查空而不是空。
如果我使用重定向,我会像重定向“仪表板”一样使用它;
代码将是
确保您的站点在URL中加载时没有index.php。如果没有,请搜索.htaccess以访问您的站点
不重定向到dashboardView是什么意思?它显示白色页面吗?重定向到另一个页面?如果我使用另一个视图,我会遇到同样的问题。浏览器显示:页面未正确重定向,仅控制器的第一个字母应为文件名的大写字母,此处解释的类名应为$this->session->userdata'user_logged'!==null重定向到仪表板,不是吗?我们检查用户是否未登录,如果是,我们重定向到仪表板,如果他已登录,我们不做任何操作并继续执行控制器的其余部分,检查更新的答案。这里解释的文件名和类名中只有控制器的第一个字母应为大写是,现在它更有意义了。我采用了Mehdi的方法,但是在CI的会话库不起作用的情况下,我使用了$\u SESSION,我也尝试了加载代码和自动加载。@wolfgang1983在这种情况下,我应该将我的_Controller.php重命名为_Controller.php,谢谢。