我有以下功能:
public function admin_login_check()
{
if($this->session->userdata('is_logged_in') == FALSE)
redirect('admin/admin_login');
}
和这一个(目前):
public function index()
{
$this->admin_login_check();
$data['title'] = 'Početna | TOP';
$data['main_content'] = 'admin_home';
$data= $this->data + $data;
$this->load->view('admin/admin_template', $data);
}
public function admin_login()
{
$data['title'] = 'Prijava | TOP';
$data['main_content'] = 'admin_login';
$data= $this->data + $data;
$this->load->view('admin/admin_template', $data);
}
当我在$this->admin_login_check()
函数内__construct
时出现以下错误:
xxx / admin / admin_login的网页导致重定向过多。
答案 0 :(得分:3)
您有太多重定向的原因是因为当您放置
时$this->admin_login_check();
在admin
构造函数控制器中。这将始终在admin
控制器内的每个方法/函数上运行。
由于您重定向到同一个admin
控制器,
redirect('admin/admin_login');
如果您已注销,它会首先检查,因此会尝试一次又一次地重定向您。
一种解决方案是在单独的控制器上实际分离您的admin_login
页面。如果有的话,可能是home
控制器。
答案 1 :(得分:0)
您可以检查当前方法名称:
public function admin_login_check()
{
$loged_in = $this->session->userdata('is_logged_in') ? TRUE : FALSE;
if($this->router->method != 'admin_login' && $loged_in==FALSE)
redirect('admin/admin_login');
}
IF会检查您是否在admin_login页面以外的任何页面,并且您尚未登录。
我怎么认为这种重定向方法有点不对。 如果你让一个函数is_admin返回TRUE / FALSE并做这样的事情会更好......
public function __construct()
{
parent::__construct();
if($this->is_admin() == FALSE && $this->router->method != 'admin_login')
redirect('admin/admin_login');
}
public function is_admin()
{
return $this->session->userdata('is_logged_in') ? TRUE : FALSE;
}