当前位置:首页 > 文章 > 帝国CMS > 正文内容

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

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

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

然后在购物车的验证页面,建议一个COOKIE缓存字段,每次产品加入购物车,在验证页面中,通过判断COOKIE缓存字段的值是否和get传递过来的随机数相同,来确定表单是否重复提交。

如果相同,该产品则不加入购物车,并将COOKIE缓存字段的值清空。

如果不相同,则将该产品加入购物车,并将COOKIE缓存字段的值设置为get传递过来的随机数。

这样浏览器如果出现重复提交,COOKIE缓存字段的值就会与get传递过来的随机数相同,便可以阻止表单重复提交;

解决方法如下:

1、在帝国cms产品模板的加入购物车的表单中加入以下代码

<input type="hidden" name="gd_yanzhenghao" value="" id="gd_yanzhenghao">

//建立一个判断用的随机数

2、在表单的提交按钮中加入:

onclick="alpj_gongdanhao()"

也就是在 <input name="submit"  type="submit"····> 这一行中加入;

3、在产品页加入以下js

----------------------------------------------------------------------------
<script>
function alpj_gongdanhao() {
var prefix = '';
for (var j = 0; j < 12; j++) {
prefix = prefix + Math.floor(Math.random() * 15);
}
var pj_showGD =prefix;
document.getElementById("gd_yanzhenghao").value = pj_showGD;
}
//获取文本框的值,若文本框为空则自动生成随机日期
function SJ_PageLoad(){
var neirong_sj = document.getElementById("gd_yanzhenghao").value;
if ( neirong_sj == null || neirong_sj == undefined || neirong_sj=="" ){
console.log( alpj_gongdanhao() );//自动执行上方函数然后自动输入一个随机工单号
}
}
</script>
--------------------------------------------------------

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);

扫描二维码推送至手机访问。

版权声明:本文由蓝博发布,如需转载请注明出处。

本文链接:https://www.blueboss.cn/p/414.shtml

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

帝国CMS动态页支持栏目导航标签循环子栏目数据标签万能标签的调用

帝国CMS动态页支持栏目导航标签循环子栏目数据标签万能标签的调用

分享一种利用JS来实现支持栏目导航标签,万能标签,循环子栏目数据标签的方法。   第一步:在【模板】下面增加标签模板,标签模板内容如下:   页面模板内容(*): [!--empirenews.listtemp--]<!--list.var1-->[!--empirenews.list...

帝国cms灵动标签实现循环子栏目数据

帝国cms灵动标签实现循环子栏目数据

帝国cms灵动标签实现循环子栏目数据 <?php $bclassid=$GLOBALS[navclassid];//取得本栏目id //取得本栏目下的子栏目 ?> [e:loop={"select classid, classname, classpath from `[!db.pre...

帝国cms搜索模板无缓存使用多个搜索模板

帝国cms搜索模板无缓存使用多个搜索模板

网站中用到两个甚至多个搜索模板,在搜索代码中除了会设置指定的模板id以外,还需要更改以下内容,目的就为了解决缓存问题,比如说,用户可能是在搜索“模板”图文列表后,再去搜“教程”,搜索列表显示的还是之前“模板”的搜索模板。提醒大家一定要先备份哟!教程如下: 将以下内容替换到/e/search/resu...

帝国cms信息反馈开启验证码

帝国cms信息反馈开启验证码

1、后台-系统设置-系统参数设置-信息设置-反馈验证码(后面点开启) 2、信息反馈本身并无放置验证码代码,所先复制评论的验证码代码,后台-模板-评论列表模板-管理评论模板-修改-复制其中的验证码代码 代码如下: 验证码:<input name="key" type="text" size=...

帝国cms专题页面点击率统计代码

帝国cms专题页面点击率统计代码

帝国cms专题页面点击率统计代码 专题访问浏览点击统计 <script src=[!--news.url--]e/public/onclick/?ztid=[!--self.classid--]&enews=dozt></script> 普通内容页 <scr...

帝国CMS使用esub/substr截取前面(或后面)两个字符(或多个字符)

帝国CMS使用esub/substr截取前面(或后面)两个字符(或多个字符)

帝国CMS怎么用灵动标签使用esub/substr截取前面,或者截取后面两个字符或者多个字符呢? ①、帝国网站 显示是"帝国" (这是灵动标签默认的截取标签字段“esub”), [e:loop={'select * from phome_enewsclass where bclassid=0 or...