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

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

浏览次数:
作者: 墨鱼
信息来源: 本站原创
更新日期: 2022-01-06 18:32:18
文章简介

帝国CMS优化购物体验,针对360等浏览器重复提交表单导致的购物车商品数量翻倍问题,提供有效解决方案。确保用户购物流程顺畅,避免重复添加,让您的购物更轻松、更愉快!

  • 正文开始
  • 相关阅读
  • 推荐作品

最近在用帝国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);

----------------------------------------------------------------------------

结束!点赞!

帝国CMS模板裁剪图片函数sys_ResizeImg配合随机图片的用法
« 上一篇 2022年01月05日
帝国CMS会员浏览记录同步版插件
下一篇 » 2022年01月14日
  • 微软bing IndexNow的推送和管理-帝国CMS插件
    23阅读0条评论0个赞
    微软Bing IndexNow推送管理插件,专为帝国CMS打造。本教程指导您如何高效利用该插件,实现网站内容快速被Bing搜索引擎收录。通过简单配置,即可自动化推送新发布或更新的页面至Bing,加速索引过程,提升网站SEO效果。轻松管理推送历史,监控索引状态,确保网站内容及时展现给目标用户。优化网站可见性,从掌握Bing IndexNow推送管理开始。
  • 帝国CMS8.0测试版搜索结果页只显示第1页的解决方法
    50阅读0条评论0个赞
    对于刚安装帝国CMS8.0测试版尝鲜的小伙伴们可能发现,使用高级搜索的时候结果页只显示第1页,虽然帝国CMS开发者说正式版会解决此问题,但是临时使用还是要先解决这个问题的。所以今天墨鱼就说下临时的解决方法。
  • 【优化分享】帝国CMS大数据量筛选性能瓶颈突破实践
    243阅读0条评论5个赞
    突破帝国CMS大数据筛选性能瓶颈实战教程:掌握高效技巧,轻松应对海量数据处理挑战。本教程详解性能优化策略,助力快速筛选,提升系统响应速度。无论你是开发者还是管理员,都能从中获益,实现数据筛选效率飞跃,让帝国CMS在大数据环境下依然流畅运行。立即学习,解锁大数据处理新技能!
  • 帝国CMS统计多个数据表今日更新总数代码
    166阅读0条评论4个赞
    帝国CMS统计多表今日更新总数代码教程:通过SQL查询结合帝国CMS函数,汇总多个数据表中今日更新的记录总数。步骤包括编写SQL联合查询语句,利用`DATE()`函数筛选今日数据,结合帝国CMS的数据库操作函数执行查询,并输出结果。此教程教你高效获取多表今日更新概况,优化管理效率。
  • 帝国cms7.5无刷新 Ajax 点击加载更多列表信息源代码
    825阅读2条评论13个赞
    帝国CMS 7.5 Ajax无刷新加载,高效实现点击加载更多列表信息,精简源码仅展示核心功能,优化用户体验,提升网页加载效率。

如本文对您有帮助,就请墨鱼抽根烟吧!