我的项目有几个视图,它们从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。有谁知道为什么?
答案 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);
您可以在视图文件中使用该数组,如何从传递的数组中使用。