CodeIgniter客户控制器类说会话未定义

时间:2010-09-28 22:04:45

标签: php authentication codeigniter

我正在使用CodeIgniter(v1.7.2)并且我创建了一个自定义控制器,其中包含名为MY_Controller的身份验证(基于David Winter的博客文章)。当我加载任何使用此基类的控制器时,我收到此错误;

  

*消息:未定义的属性:MY_Controller :: $ session *

请注意,我正在自动加载'session'(和'MY_controller'作为库),如下所示:

$autoload['libraries'] = array('database', 'session', 'MY_Controller');

这是MY_Controller:

class MY_Controller extends Controller {
    public function __construct() {
        parent::__construct();      
        if (!$this->session->userdata('loggedin')) { <-- error is here
            header('Location: /sessions/login');
            exit();
        }
    }
}

这是我正在尝试加载的控制器:

class Welcome extends MY_Controller {

    function  __construct() {
        parent::__construct();
    }

    function index() {
        $this->load->view('header');
        $this->load->view('welcome_message');
        $this->load->view('footer');
    }
}

当我将var_dump $this->session置于错误发生的上方时,我可以看到它是NULL。即使将$this->load->library('session');放在MY_Controller的构造函数中也行不通。为什么不正确加载?

由于

1 个答案:

答案 0 :(得分:5)

尝试从自动加载中取出MY_Controller。

$autoload['libraries'] = array('database', 'session');

您正在扩展由codeigniter自动加载的控制器类,因为它是核心

的一部分