【问题标题】:Can't get my $_SESSION right无法让我的 $_SESSION 正确
【发布时间】:2013-11-06 23:48:42
【问题描述】:

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

我有 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['colour'] 和 $_POST['size']。问题是当我这样存储它时,我只能订购产品 a 的 1 和产品 b 的 1,因为每当我想添加来自 cart_1 的产品 a 的另一个产品将与具有不同颜色的产品相同。

提前致谢!

【问题讨论】:

    标签: php session webshop


    【解决方案1】:

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

    一旦您进入处理表单的当前页面,您就可以通过引用其 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多