无法让我的$ _SESSION正确

时间:2013-11-06 23:48:43

标签: php session webshop

我希望有人可以帮我解决一些麻烦。目前我正在尝试建立一个简单的网上商店。首先是一些信息:

我有2种产品,产品a和产品b。这两款产品有18种颜色和3种尺寸可供选择。当您想购买产品a时,只需转到产品a的页面,选择颜色和尺寸,然后将其添加到购物篮中。

我遇到的问题是我无法在会话中存储颜色和大小。现在我将产品的ID和数量存储在这样的会话中:

 if (isset($_GET['add'])) {
      $_SESSION['cart_'.(int)$_GET['add']]+='1'; 
 }

会话的结果是:cart_1 1.这意味着ID为1,1的产品已添加到购物篮中。但我想做的是我的会话也可以告诉我提交了哪种颜色和尺寸。 ($ _POST ['color']和$ _POST ['size']。问题是当我像这样存储它时,我只能订购1个产品a和1个产品b,因为每当我想添加另一个产品a cart_1中的1将与具有不同颜色的产品相同。

提前致谢!

1 个答案:

答案 0 :(得分:1)

假设您以正确的形式包装了所有选项,那么您可以为每个输入提供一个id。

一旦您处理了处理表单的当前页面,您就可以通过引用它们来轻松访问输入。

示例:

<form id="mainForm" method="POST" action="scriptUrl.php">
    <input type="text" id="color" value="" />
    <input type="text" id="size" value="" />
    <input type="submit" id="submitFormButton" value="Submit" />
</form>

然后您可以轻松地访问这些值(一旦提交表单):

$color = isset($_GET['color']) ? $_GET['color'] : "";
$size = isset($_GET['size']) ? $_GET['size'] : "";

使用ternary operator

如果您愿意,可以将其添加到您的会话中,但最好只为单个值设置一个会话。也就是说,如果你觉得你真的必须使用会话;还有其他选择,有时更合适。

我知道您没有使用输入文本,但您可以轻松修改您的示例。

人们之间是否使用GET或POST,我更喜欢POST。