会话不包含自定义用户数据

时间:2012-01-02 14:15:54

标签: php codeigniter session

我是CodeIgniter的新手,我开始使用会话库。

我已自动加载会话库并尝试将当前user_id保存到会话userdata数组中。但是当我尝试在另一页上阅读时,信息就消失了。

本机PHP会话工作正常(测试它),所以它必须是来自CI的东西。

我编写了一个简单的测试页面,我测试了以下内容:

  • 设置会话userdata。
  • 测试页面正确显示用户数据。
  • 取消注释控制器代码中的设置会话数据行并重新加载页面。
  • 测试页面不显示用户数据。

控制器的代码:

class Welcome extends CI_Controller {

   public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }
}

观点代码:

<?php
    echo $this->session->userdata('test');
?>

2 个答案:

答案 0 :(得分:0)

为什么视图会显示session_id而不是您创建的“test”变量?

你测试了吗

<?php
echo $this->session->userdata('test');

&GT;

在视图文件中?

答案 1 :(得分:-1)

CI的会话是cookie,而不是PHP原生会话。在视图中调用会话(IIRC),但由于您的视图在同一请求中加载会话创建,因此无法设置。

你需要在另一个请求(即另一个控制器)上调用它,或者在其他地方设置会话(在另一个控制器中,通过AJAX也可以工作),或者使用本机PHP $ _SESSION数组。

我认为您的实际代码只是一个测试用例,否则为什么不只是

public function index(){ 
        $data = null;

        $data['test'] = "Yeeeeh!!";
        $this->session->set_userdata($data);

        $this->load->view('welcome_message', $data);
    }

在视图中:

<?php
  echo $test;
?>