【问题标题】:CodeIgniter adding session variable to an already defined "named session"CodeIgniter 将会话变量添加到已定义的“命名会话”
【发布时间】:2013-04-07 07:11:12
【问题描述】:

我已经创建了名为“已验证”的会话,如下所示(在我的登录控制器中):

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 文档后,我意识到上面的代码将不起作用,因为我没有告诉它应该将变量添加到哪个会话。

谁能指出我正确的方向?

【问题讨论】:

  • 您可以检索“已验证”变量的值,并将新的“book_id”元素添加到其中,然后再次将其存储在“已验证”变量中。
  • 这是否意味着我必须重新声明(如果我可以这样说)$sess_array{} 只有这次我添加一个新变量?

标签: php codeigniter session session-variables session-cookies


【解决方案1】:

您在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'];

【讨论】:

  • 这正是我所需要的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多