帝国CMS解决360等浏览器会重复表单提交导致加入购物车的商品数量翻倍的问题!
发布时间:2021-08-30作者:帝国建站网
用帝国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
----------------------------------------------------------------------------
3、打开eadminShopSysclasshShopSysFun.php文件
找到以下函数:
//加入购物车
function AddBuycar($classid,$id,$pn=1,$add){
在该函数的结尾加上一个“}”符号
然后在该函数中找到以下代码,约在该函数的第五行:
if(empty($classid)||empty($id)||empty($class_r[$classid][tbname]))
在其上方加入以下代码:
--------------------------------------------------------------------------------
解决的思路就是在产品页的加入购物车的表单中添加一个随机数,用于做判断。
然后在购物车的验证页面,建议一个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);相关帝国教程
- 02-20帝国cms灵动标签调用tags名称与链接的代码和方法是什么?
- 07-12帝国cms建站用灵动标签调用当前文章的“上一篇”和“下一篇”
- 01-21帝国CMS模板中内容关键字加粗显示
- 05-25帝国CMS模板中信息反馈开启验证码
- 12-04帝国CMS会员中心首页调用各系统模型的内容SQL
- 09-07帝国cms在内容页模板里添加错误报告链接
- 11-27帝国CMS调用当前信息数据表名
- 10-23帝国CMS获取当前目(父栏目)ID、名称、别名、链接
- 10-28帝国CMS单条信息指定不同内容模板(限动态)
- 03-30帝国CMS获取当前自定义列表的listid
- 08-14在帝国CMS系统内容页点击改变字号大小的操作方法
- 01-09帝国CMS的复选框字段输出调用教程
- 02-26帝国CMS模板一句话解决标题和副标题自动判断显示
- 10-18帝国CMS记录信息发布者IP
- 11-06帝国CMS列表页模板怎么随机调用插入广告
- 01-05帝国cms商城订单号调用方法
- 05-04帝国CMS如何判断当前页面为首页高亮代码是什么?
- 09-30帝国cms 电影在内容页和列表页调用真实地址的方法
- 02-04帝国CMS SQL调用非终极栏目处理技巧
- 05-28帝国CMS获取当前无限极栏目信息