2016-10-17 110 views
0

我想保存在codeigniters'會話輔助的數組,但我不斷收到如何在codeigniter中將數組保存到會話中?

我想保存在一個新的會話變量數組的數組,這樣我可以在另一個控制器查看會話,如果我需要它或另一種觀點。

我的會話在我的配置文件中自動加載。

這段代碼在我的視圖文件中。 $ arr = array();

foreach($value->result as $val){} 
    if($val->somethinghappenedtrue){ 
     $arr[] = array('data' => $thethingthathappened); 
    } 
} 
// since my session is autoloaded I don't need to initialize 
//session if I'm not wrong $this->load->session etc... 
$this->session->new_session_name($arr); 

Fatal error: Call to undefined method CI_Session::new_session_name()

+0

你加載Session庫? $ this-> load-> library('session'); –

+0

是這個CI 3.x - 你可以嘗試文檔,http://www.codeigniter.com/user_guide/libraries/sessions.html#adding-session-data在任何情況下,你的錯誤是從調用一個方法,dosn' t存在於CI_Session中。由於我使用其他集成(用於成員身份登錄)與我的CI站點,因此我不使用CI進行會話.... – ArtisticPhoenix

回答

0

比方說,一個特定用戶登陸到你的網站。一旦通過身份驗證,您就可以將他們的用戶名和電子郵件地址添加到會話中,使您可以在全球範圍內使用這些數據,而無需在需要時運行數據庫查詢。

與其他變量一樣,您可以簡單地將數據分配給$ _SESSION數組。或者作爲$ this-> session的屬性。

或者,也可以使用將其分配爲「userdata」的舊方法。但是,這種通過你的新數據數組的set_userdata()方法:

$this->session->set_userdata($array); 

Your code should be

foreach($value->result as $val){} 
    if($val->somethinghappenedtrue){ 
     $arr[] = array('data' => $thethingthathappened); 
    } 
} 
// since my session is autoloaded I don't need to initialize 
//session if I'm not wrong $this->load->session etc... 
$this->session->set_userdata($arr); 

如果你想一次添加一個用戶數據,set_userdata()也支持這一語法:

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

如果你想驗證會話值存在,簡單地用isset()函數檢查:

// RET甕如果 'some_name' 項不存在FALSE或爲NULL, // TRUE否則:

isset($_SESSION['some_name']) 
+0

事情是,userdata已經有數據,我想使用其他整個變量比給出的。這就是爲什麼我把'$ this-> session-> new_session_name($ arr);'與new_session_name作爲一個整體的新會話變量。這不能做到嗎?如果我添加其他不相關的東西,我不會改變userdata中的數據嗎? – learningbyexample

+0

new_session_name()方法不存在於會話中參考ci文檔https://www.codeigniter.com/userguide2/libraries/sessions.html或https://www.codeigniter.com/user_guide/libraries/sessions.html –