我正在为学校作业建立一个购物车。除了将项目添加到cart变量之外,我几乎都在那里。
我已经设置了我的购物车会话:$_SESSION['temp_session'] = array();
然后,当项目添加到购物车时,执行此代码
if (isset($_POST['addtocart'])) {
$item_name = $_POST['item_name'];
$price = $_POST['price'];
$qty = $_POST['qty'];
$newItem = $item_name.":".$price.":".$qty;
//echo $newItem;
if (isset($_SESSION['shop_session'])) {
array_push($shop_session, $newItem);
//header('Location: cart.php');
print_r($shop_session);
}
else {
array_push($temp_session, $newItem);
//header('Location: login.php?notLoggedIn=true');
print_r($temp_session);
}
}
似乎工作正常(我可以打印$newItem
并且它包含元素)但是当我尝试将$newItem
添加到$shop_session
或{{1}时然后将它们打印出来,那里的数组是空的。
这与我使用$temp_session
的方式有关吗?
由于
答案 0 :(得分:4)
您的RegisterGlobals是否已开启?如果不是,你必须使用
if (isset($_SESSION['shop_session'])) {
array_push($_SESSION['shop_session'], $newItem);
//header('Location: cart.php');
print_r($_SESSION);
}
else {
array_push($_SESSION['temp_session'], $newItem);
//header('Location: login.php?notLoggedIn=true');
print_r($_SESSION);
}
答案 1 :(得分:3)
您无法输入
$_SESSION['temp_session'] = array();
并期望有一个名为$ temp_session的变量。你所拥有的只是一个数组($ _SESSION),它包含一个元素(键名为temp_session
),它也是一个数组。
为了获得所需的结果,您需要一个额外的行,例如:
$temp_session = $_SESSION['temp_session'];
当你更新它时,再次回到你的会话中:
$_SESSION['temp_session'] = $temp_session;