0

我在 PHP 中有以下函数,每次用户单击“添加到购物车”时,它都会将一个项目添加到购物车中。

问题是,如果有人在将商品添加到购物车后手动重新加载页面,则会添加新商品。

有什么技巧可以避免这种情况吗?

function addtocart($pid,$q)
    {
        if($pid<1 or $q<1) return;
        if(is_array($_SESSION['cart']))
        {

            $max=count($_SESSION['cart']);
            $_SESSION['cart'][$max]['itemId']=$pid;
            $_SESSION['cart'][$max]['qty']=$q;
            $max=count($_SESSION['cart']);
        }
        else
        {
            $_SESSION['cart']=array();
            $_SESSION['cart'][0]['itemId']=$pid;
            $_SESSION['cart'][0]['qty']=$q;
            $max=count($_SESSION['cart']);

        }
    }

这就是我调用函数的方式:

用户点击加入购物车:

<input type="button" value="<?php echo $lang['ADDTOCART']; ?>" class="addToCart" onclick="addtocart(<?php echo $itemId; ?>)" />

执行的Javascript:

<script language="javascript">
    function addtocart(pid){
        document.cartAdding.itemId.value=pid;
        document.cartAdding.command.value='add';
        document.cartAdding.submit();
    }
</script>

页面重新加载并进入此处:

if(isset($_REQUEST['command']) && $_REQUEST['command']=='add' && $_REQUEST['itemId']>0)
{
        $pid=$_REQUEST['itemId'];
        addtocart($pid,1);
}

谢谢

4

1 回答 1

2

您可以放置​​一个 if 语句来检查该元素是否已被添加。在我的头顶上,类似:

if (array_key_exists($pid, $_SESSION['cart']['itemId'])){ // check to see if product has already been added
 // put code statments here
}
于 2013-02-14T20:19:53.207 回答