无法访问codeigniter会话变量,直到页面刷新

时间:2012-10-16 06:14:35

标签: php codeigniter session

使用codeigniter构建电子商务网站。 我在控制器上有一个方法,用户在结账前输入他们的交货信息,该方法保存交货信息并创建一个名为“orderid”的新会话变量,其中orderid的值为其值。设置会话变量后,方法重定向到结账控制器,我从会话中检索“orderid”,从数据库中检索订单,以便用户在付款前确认信息。

问题是,当用户被重定向到结帐页面时,他们看不到他们的交付数据。 什么时候这样做

echo $this->session->userdata('orderid');

我可以看到价值 但是,当我将它传递给我的方法,该方法应该返回一个数据数组

$order = $this->orders->get_order($this->session->userdata('orderid'));
print_r($order);

我得到一个空数组array()

刷新结帐页面时,它的行为正确。 可能是什么问题

2 个答案:

答案 0 :(得分:0)

要使会话发挥作用,您必须将$this->load->library('session');添加到__contruct()功能

public function __construct() {
parent::__contruct();
$this->load->library('session');
}

答案 1 :(得分:-1)

您无法像这样访问会话值

$order = $this->orders->get_order($this->session->userdata('orderid'));

您可以使用以下方法,它可以正常工作

$orderid=$this->session->userdata('orderid');
$order = $this->orders->get_order($orderid);

** 请在构造函数或此函数中记住加载会话库

$this->load->library('session');