2013-07-03 43 views
-2

我看到一些奇怪的行爲:PHP會話和表單輸入名字感到困惑

我有2個會議,我設置了一些值:$_SESSION['shippingZip']$_SESSION['shippingOption']

然後我的代碼都會經歷這個代碼張貼在形式發送的輸入值:

$shippingOption = $_POST['shippingOption']; 
Print_r ($_SESSION); 
$shippingZip = $_POST['shippingZip']; 

這些帖子來了空在這一關。但是,打印會顯示我的會話$ _SESSION ['shippingOption']爲空,當它顯示之前分配給它的字符串時。 -------------------------- POSTING充分證明 會話裝載有一些數據:

$_SESSION['shippingOption'] = $shippingOption; 
$_SESSION['shippingZip']= $shippingZip; 

然後:

Print_r ($_SESSION); 
$shippingOption = $_POST['shippingOption']; 
Print_r ($_SESSION); 
$shippingZip = $_POST['shippingZip']; 
Print_r ($_SESSION); 

輸出:

Array ([itemAdded] => 1 [Payment_Amount] => 46.52 [cart] => Array ([4] => Array ([itemId] => 4 [qty] => 1)) [shippingOption] => FIRST CLASS [shippingZip] => 10025 [shippingPrice] => 1.52) 
Array ([itemAdded] => 1 [Payment_Amount] => 46.52 [cart] => Array ([4] => Array ([itemId] => 4 [qty] => 1)) [shippingOption] => [shippingZip] => 10025 [shippingPrice] => 1.52) 
Array ([itemAdded] => 1 [Payment_Amount] => 46.52 [cart] => Array ([4] => Array ([itemId] => 4 [qty] => 1)) [shippingOption] => [shippingZip] => [shippingPrice] => 1.52 

你可以清楚地看到每個職位後,具有相同名稱的會議失去了它的價值。這完全瘋了!

+0

你在什麼地方設置會議?並用什麼數據? –

+0

'$ _SESSION'和'$ _POST'之間沒有關係。你能否展示你所看到的,從你的描述中很難理解。 – Barmar

+0

特別是,如果'print_r($ _ SESSION)'顯示爲空,爲什麼你認爲會話繼承了POST值? – Barmar

回答

2

$_POST不直接填充$_SESSION。您需要將值分配給會話

$_SESSION['shippingOption'] = $_POST['shippingOption']; 

編輯

後您發佈更多的代碼,它看起來像你不設置它之前定義$shippingOption;$_SESSION['shippingOption'] = $shippingOption;

確保訂單如下:

$shippingOption = $_POST['shippingOption']; 
$_SESSION['shippingOption'] = $shippingOption; 
+0

正如我的問題中提到的,我在代碼早些時候爲這些會話分配值 – samyb8

+0

發佈代碼。我敢打賭1.你沒有正確設置它們,或者2.你的表單沒有正確傳遞'$ _POST'值。無論哪種方式,您都需要發佈更多代碼。 –

+0

更新了帖子。並添加輸出以顯示Sessions如何依次丟失它們的值 – samyb8