帝国CMS解决360等浏览器会重复表单提交导致加入购物车的商品数量翻倍的问题!
解决的思路就是在产品页的加入购物车的表单中添加一个随机数,用于做判断。
然后在购物车的验证页面,建议一个COOKIE缓存字段,每次产品加入购物车,在验证页面中,通过判断COOKIE缓存字段的值是否和get传递过来的随机数相同,来确定表单是否重复提交。
如果相同,该产品则不加入购物车,并将COOKIE缓存字段的值清空。
如果不相同,则将该产品加入购物车,并将COOKIE缓存字段的值设置为get传递过来的随机数。
这样浏览器如果出现重复提交,COOKIE缓存字段的值就会与get传递过来的随机数相同,便可以阻止表单重复提交;
解决方法如下:
1、在帝国cms产品模板的加入购物车的表单中加入以下代码
//建立一个判断用的随机数
2、在表单的提交按钮中加入:
onclick="alpj_gongdanhao()"
也就是在 这一行中加入;
3、在产品页加入以下js
----------------------------------------------------------------------------
--------------------------------------------------------
3、打开eadminShopSysclasshShopSysFun.php文件
找到以下函数:
//加入购物车
function AddBuycar($classid,$id,$pn=1,$add){
在该函数的结尾加上一个“}”符号
然后在该函数中找到以下代码,约在该函数的第五行:
if(empty($classid)||empty($id)||empty($class_r[$classid][tbname]))
在其上方加入以下代码:
--------------------------------------------------------------------------------
//判断浏览器是否重复提交了表单 $gd_chongfuPD=$_COOKIE["gd_chongfuPD"]; if($gd_chongfuPD==$_GET['gd_yanzhenghao']){ $gd_chongfuPD=''; // 发送一个缓存cookie用做判断 setcookie("gd_chongfuPD",$gd_chongfuPD); header("location:/e/ShopSys/buycar/"); }else{ $gd_chongfuPD=$_GET['gd_yanzhenghao']; // 发送一个缓存cookie用做判断 setcookie("gd_chongfuPD",$gd_chongfuPD);