我尝试实现只有登录用户才能访问的基本部分。我重写了CI_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();
}
}
然后我从Auth_Controller扩展所有其他仅适用于登录用户的控制器,如下所示:
class Dashboard extends Auth_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('dashboardView');
}
}
但是登录成功后,它不会重定向到dashboardView。
任何人都知道到底发生了什么?
答案 0 :(得分:1)
在这部分代码中,您无限重定向到Dashboard
控制器:
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
}
}
}
答案 1 :(得分:0)
<强>评论强>
!= null
。但CI 是检查empty()
而不是null
的最佳选择。redirect()
,则会像redirect('dashboard');
代码
if (!empty($this->session->userdata('user_logged'))) {
redirect('dashboard');
else {
redirect('auth/login');
}
确保您的网站在网址中加载时不会显示
index.php
。如果没有搜索到您网站的.htaccess
。