【发布时间】:2013-07-01 17:38:09
【问题描述】:
我看到一些奇怪的行为:
我有 2 个会话设置了一些值:$_SESSION['shippingZip'] 和 $_SESSION['shippingOption']。
然后我的代码通过这段代码发布表单中发送的输入值:
$shippingOption = $_POST['shippingOption'];
Print_r ($_SESSION);
$shippingZip = $_POST['shippingZip'];
在此通道中,这些 POST 将变为空。但是,当它应该显示以前分配给它的字符串时,打印显示我的会话 $_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 是如何失去其价值的。太疯狂了!!!
【问题讨论】:
-
您在什么/哪里设置会话?用什么数据?
-
$_SESSION和$_POST之间没有关系。你能把你看到的东西展示出来吗,从你的描述中很难理解。 -
特别是,如果
print_r($_SESSION)显示为空,为什么您认为会话正在继承 POST 值? -
当我将 Print 放在 $shippingOption 之前,$_SESSION['shippingOption'] 会显示预期的字符串值。当我把它放在(如示例中)之后,会话 $_SESSION['shippingOption'] 显示为空
-
您是否曾经使用过早已弃用的session_register() 函数?这将解释一个普通(但全局)变量覆盖会话变量。