[英]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.