2012-10-16 85 views
0

我正在使用codeigniter構建電子商務網站。 我有一個控制器上的方法,用戶在結帳之前輸入他們的傳遞信息,該方法保存傳遞信息並創建一個名爲「orderid」的新的會話變量,該變量的值爲orderid作爲其值。設置會話變量後,該方法重定向到結帳控制器,在該會話中,我從會話中檢索「orderid」以從數據庫中檢索訂單,供用戶在付款前確認信息。無法訪問codeigniter會話變量,直到頁面刷新

問題是,當用戶重定向到結帳頁面時,他們看不到他們的送貨數據。 當做到這一點

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

我可以看到價值 但是,當我把它傳遞給我的方法是應該返回數據的數組

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

我得到一個空數組array()

當結賬頁面刷新時,它的行爲是正確的。 可能是什麼問題

+0

remembere負荷會議庫需要更多的腳本 –

+0

你在哪裏把那個'echo'聲明? get_order方法調用之前是否正確?我有點猜測你在調用該方法後實際設置了值。 –

回答

-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'); 
+0

Kemal Fadillah關於我的代碼有什麼問題請詳細解釋 – Elby

+0

這會爲MrFoh工作,謝謝 – Elby

0

爲了使會議工作,你必須添加$this->load->library('session');__contruct()功能

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

-1 Codeigniter不使用傳統的PHP會話。它實際上將它的'會話'數據存儲在cookie中(或者如果你已經設置了數據庫)。因此,沒有必要添加session_start() –