2014-11-25 18 views
0

工作,我有一個從模型獲取數據,並存儲在會話變量數據的功能:訪問在同一控制器的其他方法的會話數據沒有笨

public function fetchData() { 
    $somedata = $this->some_model->some_function(); 
    $this->session->set_userdata('mydata',$somedata); 
} 

現在,如果我在同樣的方法訪問會話和打印然後它的工作原理,但是當我在其他方法訪問此會話變量,然後它不起作用。

public function showData() { 
    $mydata = $this->session->userdata('mydata'); 
    print_r($mydata); // it prints nothing 
} 

當我在showData()方法打印會話那麼它僅打印用戶細節:

Array 
(
[session_id] => 9c7bc7a7a8acad514d4ece2c841c1403 
[ip_address] => 192.168.0.115 
[user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0 
[last_activity] => 1416898254 
[user_data] => 
[user] => testuser 
[currentUser] => testuser 
[userID] => 1 
[email_address] => [email protected] 
[first_name] => Test 
[last_name] => User 
[logged] => 1 
[account_type] => admin 
[currentUserName] => Test user 
) 

當然我已經安裝在autoload.php會話通過默認來加載,並且還試圖加載在構造函數中,但沒有任何工作。

有人可以告訴我爲什麼會發生這種情況嗎?

在此先感謝。

+0

檢查您是否取消設置會話數據。 – Pupil 2014-11-25 06:34:58

+0

我查過了,我不會在任何地方將會話數據取消設置。包含會話庫是否包含 – Ankit 2014-11-25 06:37:14

+0

?還要檢查你的$ somedata是否有值 – 2014-11-25 06:38:49

回答

0

您使用此命令:

$this->session->set_userdata('some_name', 'some_value'); 

但是,當你想同時添加一個值,該命令只使用,並沒有什麼話說,你可以用一個值/行作爲陣列,所以我建議你使用:

// pass the array to userdata, and not one value containing an array. 
$this->session->set_userdata('array_value'); 

它會更好地理解/讀你的代碼。看起來你試圖輸出完全陣列,對吧? 很簡單:

print_r($this->session->all_userdata()); // prints all userdata 

,它會返回一個關聯數組,像這樣的:

Array 
(
    [session_id] => 4a5a5dca22728fb0a84364eeb405b601 
    [ip_address] => 127.0.0.1 
    [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; 
    [last_activity] => 1303142623 
) 

但當然,與associatives你定義。如果只想打印一行,請使用:

// print one row, i.e: 'session_id', 'ip_address'. 
print_r($this->session->userdata('associative_value_you_defined')); 

有關更多信息,請訪問CodeIgniter Session Class

+0

是的你是對的,但我也嘗試過這一點,以便打印所有的用戶數據,但只有登錄細節正在打印,當我發現這是由於存儲大量數據導致的問題時,我將會話保存在db中,現在一切正常。 – Ankit 2014-11-25 12:45:57

0

這是遲到了,但我覺得這是正確的答案,它會幫助有同樣問題的人。

訪問一個變量是這樣的:

$數據= $這 - >會話級>用戶數據( 'MYDATA');

然後:

回聲$數據[ '姓氏']; //訪問姓可變

要打印整個陣列,只是做:

$數據= $這 - >會話級> all_userdata();

然後:

回波$數據;

相關問題