2013-04-15 67 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