1

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

这是在 session->userdata 数组中插入一些值的代码:它在控制器中被调用。

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

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

在我调用的视图文件中

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

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

4

2 回答 2

4

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

您可以在Controller中编写它并将返回的值发送到视图,如下所示:

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

注意:直接在视图中使用会话库 可能会导致意外问题。尝试在Controller而不是View中管理会话。

于 2012-10-19T19:33:51.040 回答
0

很抱歉首先在答案块中发布............您将这些值分配给 $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);

您可以在视图文件中使用该数组,无论您希望如何从传递的数组中获取。

于 2012-10-18T19:38:42.560 回答