如何将产品添加到购物车包括大小和数量php

时间:2019-06-07 19:22:12

标签: php

我想将一种具有所选尺寸和数量的产品添加到购物车。我已经编写了此代码,但我的问题是:  首先,它是否安全正确地工作? 然后,如果用户将一个特定产品(product_id)两次添加到购物车中(在两个不同的请求中),如何添加两个请求的数量? 最后,我应该如何为一个产品ID处理不同的尺寸?

if (isset($_POST['add2cart'])){
    if (is_numeric($_POST['proId']) and is_numeric($_POST['count']) and ($_POST['count'])>0 and strlen($_POST['size'])<5) {
        $proId= $_POST['proId'];
        $proCount = $_POST['count'];
        $proSize = $_POST['size'];
        if (!isset($_SESSION['cart'])) {
            $_SESSION['cart'] = array('id'=>$proId, 'count'=>$proCount, 'size'=>$proSize);
            $_SESSION['cartStatus'] = 'open';
            $successMsg = 'با موفقیت به کارت اضافه شد .';
        } else {
            if (isset($_SESSION['cartStatus']) and $_SESSION['cartStatus'] == 'open') {
                $_SESSION['cart'][] = ['id'=>$proId, 'count'=>$proCount, 'size'=>$proSize];

                $successMsg = 'با موفقیت به کارت اضافه شد .';

            } else {
                $errorMsg = 'یک عملیات خرید در جریان است . تا پایان این خرید ،سبد قفل است.';
            }
        }
    }else{
        $errorMsg = 'خطایی در اطلاعات ورودی رخ داده است.';
    }

}

1 个答案:

答案 0 :(得分:0)

我相信您的问题是您错过了$_SESSION['cart']数组中的一个数组级别。试试这个:

$_SESSION['cart'] = array(array('id'=>$proId, 'count'=>$proCount, 'size'=>$proSize));

但是,如果这样,则if语句对IMO更为有意义(没有其他部分):

if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = []; //declare an empty array
    $_SESSION['cartStatus'] = 'open';
    $successMsg = 'با موفقیت به کارت اضافه شد .';
}
// Check for both $_SESSION['cart'] and $_SESSION['cartStatus']. Use && instead of "and"
if (isset($_SESSION['cartStatus'], $_SESSION['cart']) && $_SESSION['cartStatus'] == 'open') {
    $_SESSION['cart'][] = ['id' => $proId, 'count' => $proCount, 'size' => $proSize];

    $successMsg = 'با موفقیت به کارت اضافه شد .';
} else {
    $errorMsg = 'یک عملیات خرید در جریان است . تا پایان این خرید ،سبد قفل است.';
}