簡體   English   中英

PHP中的會話在刷新站點時重新添加項目到購物車

[英]Session in PHP re-adding item to cart when refreshing site

我在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);
}

謝謝

您可以放置​​一個if語句來檢查是否已添加該元素。 在我的頭頂,像:

if (array_key_exists($pid, $_SESSION['cart']['itemId'])){ // check to see if product has already been added
 // put code statments here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM