-->

帝国CMS解决360等浏览器会重复表单提交导致加入购物车的商品数量翻倍的问题!

用帝国cms商城的购物车功能时发现,用360浏览器将商品加入购物车后,购物车产品的数量会翻倍,后来发现是360浏览器在用submit提交表单时,会出现两次验证,导致表单重复提交。

解决的思路就是在产品页的加入购物车的表单中添加一个随机数,用于做判断。

然后在购物车的验证页面,建议一个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);

上一篇: 帝国CMS模板灵动标签调用栏目导航并显示内容数量

下一篇: 帝国CMS模板各页面调用专题名称和简介

关于搜一搜站长工具

如未标明出处,所有模板均为搜一搜站长工具原创,如需转载,请附上原文地址,感谢您的支持和关注。

关于代售类模板,为网友上传发布,如果有侵犯你的权益,请联系我们,第一时间删除。客服邮箱:3801085100#qq.com(#换成@)

本文地址:http://www.soyiso.net/technology/254.html

展开更多