如何在CodeIgniter中的库中使用会话?

Cha*_*Sam 10 php controller codeigniter

我想通过在控制器的构造函数中使用我的库来检查用户是否登录了CodeIgniter.

这是我的图书馆:

class Administrator_libs {

    public function validate_authen(){
        if( $this->session->userdata('user_authen') ){
            redirect(base_url().'admin/login/');
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

class Administrator extends CI_Controller {

    public function __construct(){
        parent::__construct();
        $this->load->library('administrator_libs');
        $this->administrator_libs->validate_authen();
        $this->load->model('mod_menu');
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息:

Undefined property: Administrator_libs::$session
Run Code Online (Sandbox Code Playgroud)

如何在CodeIgniter中的库中使用会话?

Jor*_*eno 30

如果要访问自己内部的任何CodeIgniter库,则必须调用get_instance().这是因为$this绑定到当前库而不是CodeIgniter对象.

$CI =& get_instance();
if( $CI->session->userdata('user_authen') ){
    redirect(base_url().'admin/login/');
}
Run Code Online (Sandbox Code Playgroud)

请参阅创建库 CodeIgniter文档.特别是在您的库中使用CodeIgniter资源下的内容

这假设您自动加载会话库config/autoload.php,如果没有,您还需要$CI->load->library("session");$CI实例化后添加.

重要提示: =&不是拼写错误.它通过引用传递以节省内存.