最近在用帝國cms商城的購物車功能時發(fā)現(xiàn),用360瀏覽器將商品加入購物車后,購物車產(chǎn)品的數(shù)量會翻倍,后來發(fā)現(xiàn)是360瀏覽器在用submit提交表單時,會出現(xiàn)兩次驗(yàn)證,導(dǎo)致表單重復(fù)提交。
解決的思路就是在產(chǎn)品頁的加入購物車的表單中添加一個隨機(jī)數(shù),用于做判斷。
然后在購物車的驗(yàn)證頁面,建議一個COOKIE緩存字段,每次產(chǎn)品加入購物車,在驗(yàn)證頁面中,通過判斷COOKIE緩存字段的值是否和get傳遞過來的隨機(jī)數(shù)相同,來確定表單是否重復(fù)提交。
如果相同,該產(chǎn)品則不加入購物車,并將COOKIE緩存字段的值清空。
如果不相同,則將該產(chǎn)品加入購物車,并將COOKIE緩存字段的值設(shè)置為get傳遞過來的隨機(jī)數(shù)。
這樣瀏覽器如果出現(xiàn)重復(fù)提交,COOKIE緩存字段的值就會與get傳遞過來的隨機(jī)數(shù)相同,便可以阻止表單重復(fù)提交;
解決方法如下:
1、在帝國cms產(chǎn)品模板的加入購物車的表單中加入以下代碼
//建立一個判斷用的隨機(jī)數(shù)
2、在表單的提交按鈕中加入:
onclick="alpj_gongdanhao()"
也就是在 這一行中加入;
3、在產(chǎn)品頁加入以下js
----------------------------------------------------------------------------
--------------------------------------------------------
3、打開eadminShopSysclasshShopSysFun.php文件
找到以下函數(shù):
//加入購物車
function AddBuycar($classid,$id,$pn=1,$add){
在該函數(shù)的結(jié)尾加上一個"}"符號
然后在該函數(shù)中找到以下代碼,約在該函數(shù)的第五行:
if(empty($classid)||empty($id)||empty($class_r[$classid][tbname]))
在其上方加入以下代碼:
--------------------------------------------------------------------------------
//判斷瀏覽器是否重復(fù)提交了表單
$gd_chongfuPD=$_COOKIE["gd_chongfuPD"];
if($gd_chongfuPD==$_GET['gd_yanzhenghao']){
$gd_chongfuPD='';
// 發(fā)送一個緩存cookie用做判斷
setcookie("gd_chongfuPD",$gd_chongfuPD);
header("location:/e/ShopSys/buycar/");
}else{
$gd_chongfuPD=$_GET['gd_yanzhenghao'];
// 發(fā)送一個緩存cookie用做判斷
setcookie("gd_chongfuPD",$gd_chongfuPD);
----------------------------------------------------------------------------
結(jié)束!點(diǎn)贊!
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除!謝謝!
轉(zhuǎn)載請注明: 帝國CMS解決360等瀏覽器會重復(fù)表單提交導(dǎo)致加入購物車的商品數(shù)量翻倍的問題!