php - CodeIgniter 将 session 变量添加到已定义的 "named session"

标签 php codeigniter session session-variables session-cookies

我已经创建了名为“已验证”的 session ,如下所示(在我的登录 Controller 中):

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 的 Controller )时,我想在我的“已验证” session 中再添加一个名为“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” session 变量已成功附加。

阅读有关 session 的 CI 文档后,我意识到上面的代码将无法工作,因为我没有告诉它我应该将变量添加到哪个 session 。

谁能指出我正确的方向?

最佳答案

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

关于php - CodeIgniter 将 session 变量添加到已定义的 "named session",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010640/

相关文章:

java - 在 Tomcat 5.5 上禁用更新 session

php - 在php中将多个textarea更新到mysql数据库中

php - web/web_dev.php 上的 Symfony2 异常

php - 试图获取非对象 CodeIgniter 框架的属性

php - 使用 Codeigniter 进行复杂查询连接

javascript - PHP - window.onbeforeunload 和自动注销冲突

java - Servlet 中的安全 doGet 参数

PHP 名称验证

php - CodeIgniter日历: storing and updating checkbox values per day

c# - CaSTLe 项目每个 session 生活方式与 ASP.NET MVC