我正在检查用户是否在构造函数方法中登录,如果没有登录,则重定向到登录方法,但它正在无限时间循环。登录方法在同一控制器中定义。
问题: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');