【问题标题】:How do I save an array into session in codeigniter?如何将数组保存到 codeigniter 中的会话中?
【发布时间】:2016-10-17 07:33:49
【问题描述】:

我想在 codeigniters 的会话助手中保存一个数组,但我不断收到

我想在一个新的会话变量中保存一个数组数组,以便我可以在需要时在另一个控制器中或在另一个视图中查看该会话。

我的会话会自动加载到我的配置文件中。

这段代码在我的视图文件中。 $arr = 数组();

foreach($value->result as $val){}
    if($val->somethinghappenedtrue){
        $arr[] = array('data' => $thethingthathappened);
    }
}
// since my session is autoloaded I don't need to initialize
//session if I'm not wrong $this->load->session etc...
$this->session->new_session_name($arr);

致命错误:调用未定义的方法 CI_Session::new_session_name()

【问题讨论】:

  • 你加载了会话库吗? $this->load->library('session');
  • 这是 CI 3.x - 您可以尝试文档,codeigniter.com/user_guide/libraries/… 在任何情况下,您的错误来自调用 CI_Session 中不存在的方法。由于我使用其他一些集成(用于会员登录)与我的 CI 站点,我不使用 CI 进行会话....

标签: php arrays codeigniter session


【解决方案1】:

假设某个特定用户登录了您的网站。一旦通过身份验证,您就可以将他们的用户名和电子邮件地址添加到会话中,从而使您可以在全球范围内使用这些数据,而无需在需要时运行数据库查询。

您可以简单地将数据分配给 $_SESSION 数组,就像使用任何其他变量一样。或者作为 $this->session 的属性。

另外,将其分配为“用户数据”的旧方法也可用。但是,将包含新数据的数组传递给 set_userdata() 方法:

$this->session->set_userdata($array);

你的代码应该是

foreach($value->result as $val){}
    if($val->somethinghappenedtrue){
        $arr[] = array('data' => $thethingthathappened);
    }
}
// since my session is autoloaded I don't need to initialize
//session if I'm not wrong $this->load->session etc...
$this->session->set_userdata($arr);

如果你想一次给用户数据添加一个值,set_userdata() 也支持这种语法:

$this->session->set_userdata('some_name', 'some_value');

如果要验证会话值是否存在,只需使用 isset() 进行检查:

// 如果 'some_name' 项不存在或为 NULL,则返回 FALSE, // 否则为真:

isset($_SESSION['some_name'])

【讨论】:

  • 问题是用户数据中已经有数据,我想使用除给定变量之外的其他变量。这就是为什么我把 $this->session->new_session_name($arr); 和 new_session_name 作为一个全新的会话变量。这不能做吗?如果我向其中添加其他不相关的内容,我不会更改 userdata 中的数据吗?
  • new_session_name() 方法在会话中不存在,请参阅 ci doc codeigniter.com/userguide2/libraries/sessions.htmlcodeigniter.com/user_guide/libraries/sessions.html
猜你喜欢
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
相关资源
最近更新 更多