繁体   English   中英

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

[英]How can I use session in a library in CodeIgniter?

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

这是我的图书馆:

class Administrator_libs {

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

这是我的控制器:

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');
    }
}

但我收到此错误消息:

Undefined property: Administrator_libs::$session

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

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

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

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

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

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

你应该简单地转到application / autoload.php并添加你的自动加载包,看起来应该像这样: $autoload['packages'] = array('database','form_validation','session','email');

你可以看到我在我的包中添加了会话包。 现在来到你的构造函数,你应该加载这个包: $this->load->library("session");

会话和任何其他lib / helper等扩展自CI_Controller / CI_Model / etc ...如果您尝试使用$this->whatever是否从任何此CI模块扩展的库,您将获得错误。 正如乔丹所说,你可以使用get_instance。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM