0

我在控制器功能中设置会话,例如

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => $data['result']
    );

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

其中 $data['result'] 是一个数组;

但是如果我尝试在同一个控制器的其他功能中访问这个变量,它什么也不会显示:

print_r($this->session->userdata('projectInfo'));

虽然使用print_r($this->session->userdata('search_count'));它显示正确的价值。

此外,如果我print_r($this->session->all_userdata());在同一个控制器的第二个函数中使用它不会显示我已经在第一个函数中设置的数组值索引

 Array
(
    [session_id] => 4adf3a42ee64ffca2b2f273cb293a10a
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
    [last_activity] => 1347689522
    [user_data] => 
)
4

2 回答 2

0

如果我是正确的,您不能在不先序列化它们的情况下将数组保存到会话中。

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => $data['result']
    );

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

变成:

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => serialize($data['result'])
    );

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

现在,如果要检索数组:

$data = unserialize($this->session->userdata('projectInfo'));
print_r($data);

请注意,当您在会话中设置大量数据时,您应该使用数据库来存储会话。

配置文件

$config['sess_use_database']    = TRUE;
于 2012-09-15T11:42:11.537 回答
0

谢谢我添加了原生 PHP 会话类

于 2012-10-01T06:17:08.737 回答