PHP会话和表单输入名称混淆



我看到了一些奇怪的行为:

我用一些值设置了两个会话:$_SESSION['shippingZip']$_SESSION['shippingOption']

然后我的代码通过这个代码来发布以一种形式发送的输入值:

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

这些POST在此过程中为空。但是,Print显示我的会话$_session["shippingOption"]为空,而它应该显示以前分配给它的字符串。--------------------------张贴完整证明会话加载了一些数据:

$_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 

您可以清楚地看到,在每次POST之后,具有相同名称的SESSION是如何丢失其值的。太疯狂了!!!

$_POST不直接填充$_SESSION。您需要将值分配给会话

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

编辑

在您发布了更多代码之后,看起来您在设置$_SESSION['shippingOption'] = $shippingOption; 之前没有定义$shippingOption;

确保订单如下:

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

最新更新