代码点火器重定向在__construct方法中不起作用



我正在检查用户是否在构造函数方法中登录,如果没有登录,则重定向到登录方法,但它正在无限时间循环。登录方法在同一控制器中定义。

问题:1( 为了测试目的,我刚才在"Welcome"控制器中写了相同的(登录(方法,在这种情况下,它工作得很好,重定向也很完美,之后我在"Wel欢迎"控制器中评论了方法,现在登录方法在用户控制器中被取消注释,现在它不工作

class User extends CI_Controller {
function __construct() {
parent::__construct();
is_logged_in();   // defined in custom helper
if (!is_logged_in()) {
redirect(base_url().'User/Login');
}
}
public function login(){
$this->load->view('loginpage');
}
}

//code in custom helper
function is_logged_in() {
$CI =& get_instance();
$user = $CI->session->userdata('id');
if (!isset($user)) { 
return false; 
} 
else { 
return true;
}
} 

如果你的助手返回false,你的代码永远不会到达控制器的登录函数,它总是经过构造函数,构造函数重定向等等…

更改此项:

if (!is_logged_in()) {
$this->login();
}

现在它调用登录函数,如果不是logge_in((,则继续使用控制器的index((函数

请在控制器中使用Helper。

class User extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->helper('name');
$checkLogin = $this->helperName->is_logged_in();   // defined in custom helper
if (!$checkLogin) {
redirect(base_url().'User/Login');
}
}

我想你会自动加载你的助手。也许你的助手功能需要更改

function is_logged_in() {
$CI =& get_instance();
$user = $CI->session->userdata('id');
if (!isset($user) || is_null($user)|| empty($user)) { 
return false; 
}else { 
return true;
}
}  

试试这种方法。这很好用。

控制器

function __construct(){
parent::__construct();
if(!is_login()){
redirect(site_url().'/User/login');
}
}

助手

function is_login(){
//Your Logic
return false;
}

自动加载.php

$autoload['helper'] = array('your_helper_class_name');

相关内容

  • 没有找到相关文章

最新更新