Codeigniter说会话userdata为空,但存在于db中

时间:2012-03-01 13:05:47

标签: php codeigniter session

每当我尝试在我的会话的userdata列中检查一个值时,它认为它是空白的,当它实际上在序列化的ci_sessions表中时。

这里是未经序列化的数据库内容:

array (
  'user_data' => '',
  'edit' => 
  array (
    'image_id' => 'HF',
    'session_id' => '783c15b057bcd9c19d3fd82f367ee55d',
  ),
)

这是我在视图中检查用户数据的方法(注意会话是自动加载的)

<?php if ($this->session->userdata('edit')) : ?> 

enter code here

以下是我如何设置会话userdata:

            $values = array(
        'image_id' => implode(",",$uploaded_image_ids),
        'session_id' => $this->session->userdata('session_id')
        );

        $this->session->set_userdata('edit', $values);

有人能看到问题吗? (整个控制器http://pastebin.com/aXeRn1VN) 还有我的config.php http://pastebin.com/A31nrC1b

2 个答案:

答案 0 :(得分:2)

视图变量与CI中的其他变量分开。我认为(我仍然是一个CI新手),$ this-&gt;会话在Views中不可用。这个CI论坛帖子讨论了问题http://codeigniter.com/forums/viewthread/100587/#508098的几个可能的解决方案 - 一个是将会话中的'userdata'值传递给传递给视图的$ data数组 - 这似乎是最好的解决方案。 / p>

答案 1 :(得分:1)

你可以这样使用

 <?php $edit = $this->session->userdata('edit'): if (!empty($edit)) : ?>