Codeigniter Session-> userdata为null

时间:2012-10-18 18:54:20

标签: php codeigniter session

我的项目有几个视图,它们从session-> userdata数组中提取值。 整个项目在我的开发机器上完美运行,但当我将项目复制到服务器时,我发现$ this-> session-> userdata为空。

这是将一些值插入session-> userdata数组的代码: 它在Controller中调用。

    $sessionArray = array(
            'web_id' => $id,
            'paperId' => $paperId,
            'prelimId' => $prelimId,
            'intakeId' => $intakeId,
            'finalId' => $finalId,
     );

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

在视图文件中我调用

var_dump($this->session->userdata);

返回的值为null。正如我之前提到的,我的开发计算机(运行WAMP)上的数组不为null。有谁知道为什么?

2 个答案:

答案 0 :(得分:4)

为了将所有会话数据检索为ASSOC数组,您可以使用all_userdata()方法。 (看看CodeIgniter user guide

您可以在 控制器 中写下并将返回的值发送到视图,如下所示:

$data['userdata'] = $this->session->all_userdata();
$this->load->view('your/view.php', $data); // use $userdata in the view

注意:直接在视图中使用会话库 may cause unexpected problems。尝试在 Controller 中管理会话,而不是 View

答案 1 :(得分:0)

很抱歉首先在answer block中发帖..........你将这些值分配给$ sessionArray。我的意思是在模型或控制器或视图文件中。

您是否在视图文件中调用var_dump($ this-> session-> userdata)。

为什么不在控制器中调用它并将其作为数组传递给控制器​​来查看文件。

在控制器中尝试这样,我会从数据库中获取$ login数组中的用户详细信息,以便我提交用户名和密码时。

我会将这些细节发送到模型文件

中的会话数组
$this->session->set_userdata('logged_in_user', $login);

之后在控制器中,如果我想使用会话数组中的用户名,我将使用如下。

$logged_in = $this->session->userdata("logged_in_user");
$model=array();
$model['logged_in_user']=$logged_in[0];

一旦我分配到$ model数组后,我想在视图文件中使用它,所以我将传递该$ model数组来查看来自控制器的文件

$this->load->view('view_file_path',$model);

您可以在视图文件中使用该数组,如何从传递的数组中使用。