我已经创建了名为“Verified”的会话,如下所示(在我的登录控制器中):
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的控制器)时,我想在我的“已验证”会话中再添加一个名为“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'];
它只能检索'id',但未定义'book_id'。但如果对$ this-> session-> all_userdata()执行var_dump(),我可以看到已成功附加'book_id'会话变量。
在阅读有关会话的CI文档后,我意识到上面的代码不起作用,因为我没有告诉它应该将变量添加到哪个会话。
有人能指出我正确的方向吗?
答案 0 :(得分: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'];