2017-08-07 69 views
1

這真的讓我發瘋。過去我沒有使用過這個問題。CodeIgniter - 無法在助手中訪問會話

所以我有一個Codeigniter安裝,其中我有自動加載會話。我也自動加載名爲「site」(site_helper.php)的幫手。

現在site_helper我做到以下幾點:

function checkLogin(){ 
    $ci = &get_instance(); 
    $session = $ci->session->user['id']; //this line throws errow 
} 

checkLogin(); 

我得到的結果是:

A PHP Error was encountered 

Severity: Notice 
Message: Undefined property: Welcome::$session 
Filename: helpers/site_helper.php 
Line Number: 15 

如果你想知道什麼是「歡迎」,它的我的默認控制器。這在我工作過的其他網站中運行良好。我完全喪失了這個問題。

任何幫助表示讚賞!

+1

[將函數中的會話變量傳遞給codeigniter中的助手]可能的副本(https://stackoverflow.com/questions/15182862/passing-a-session-variable-in-a-function-to-a -helper-in-codeigniter) – Difster

+0

是否加載會話庫? –

+0

@Difster:沒有它不是重複的,因爲我沒有傳遞任何東西給幫手。 –

回答

2

你試過

文件名:應用程序/傭工/ Site_helper.php 「第一個字母必須全部方式大寫」

if (! function_exists('checkLogin')) 
{ 
    protected $CI; 

    function checkLogin(){ 
     $this->CI =& get_instance(); 

     $this->CI->load->library('session'); 

     // This only returns the id does not set it. 
     return $this->CI->session->userdata('id'); 
    } 

} 

http://www.codeigniter.com/user_guide/general/ancillary_classes.html

然後在控制器上

public function somefunction() 
{ 
    $this->load->helper('site'); 

    // Test only 
    echo checkLogin(); 
} 

確保您已設置會話保存路徑我使用緩存文件夾。這是我設置我的方式。隨着文件夾的權限0700

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = APPPATH . 'cache/session/'; 
$config['sess_match_ip'] = TRUE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = TRUE; 

如果已經爲你工作,不要接受答案!

0

也許你可能會忘記加載Session庫

 

    function checkLogin(){ 
     $ci = &get_instance(); 

     //load the session library 
     $ci->load->library('session'); 

     $session = $ci->session->user['id']; //this line throws errow 
    } 

0

請確保您有自動加載會話libaray在autoload.php文件

Autoload.php :$自動加載[」庫'] =數組('會話');

用於訪問會話變量:

$CI = & get_instance(); 
//or you can load library in the site helper also 
$CI->load->library('email'); 
$data = $CI->session->all_userdata(); 

添加

的print_r($數據)

。你會得到有用的結果。