簡體   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