2013-04-15 68 views
4

我已經爲名爲會話創建一個已定義的「命名的會議」,「驗證」如下圖所示(在我登錄控制器):笨加入會話變量

foreach($result as $row) 
{ 
    $sess_array = array(
     'id' => $row->memberid, //Session field: id. 
     'username' => $row->member_userunique //Session field: username. 
); 
    // Create a session with a name verified, with the content from the array above. 
    $this->session->set_userdata('verified', $sess_array); 
} 

現在,當用戶打開一個名爲頁本書(帶有名爲book的控制器)我想在我的「已驗證」會話中添加一個名爲「book_id」的附加變量。

這是我做了什麼

function index() 
{ 
    //Add a new varible called book_id 
    $this->session->set_userdata('book_id', $titleID); 
} 

,當我試圖找回「book_id」使用下面的方法:

$session_data = $this->session->userdata('verified'); 
    $article_id = $session_data['book_id']; 
    $user_id = $session_data['id']; 

它只能夠檢索「身份證」但是' book_id'未定義。但是,如果做一個$的var_dump()這 - >會話級> all_userdata()我可以看到的是,「book_id」會話變量已成功追加。

閱讀會議文件CI後,我意識到,我還沒有告訴它上面的代碼將無法正常工作,其會議應變量i增加。

任何人都可以指向正確的方向嗎?

+0

您可以檢索該值的「驗證」變量,以及新的「book_id」元素添加進去,然後再次將其存儲在「已驗證」變量。 – tomor

+0

這是否意味着我必須重新申報(如果我可以這樣說好像是這樣)的$ sess_array {}只是這一次我一個新的變量添加到它? – user2247377

回答

7

你一樣在你的index()方法如下:

$session_data = $this->session->userdata('verified'); 

$session_data['book_id'] = "something"; 

$this->session->set_userdata("verified", $session_data); 

這種方式,您檢索變量的內容(即先前堅持的陣列),添加了另一個關鍵陣列(book_id)然後再存儲它。現在,你就可以做的,因爲我想你想:

$sess = $this->session->userdata("verified"); 
echo $sess['book_id']; 
+0

這正是我所需要的。謝謝您的幫助。 – user2247377