技术文摘

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

作者:雨祺   发表于:
浏览:61次    字数:1260  网络
级别: 站长   总稿: 68 篇,  月稿: 0

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

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

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

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

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

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

  解决方法如下:

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

  1. <input type="hidden" name="gd_yanzhenghao" value="" id="gd_yanzhenghao"

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

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

  1. onclick="alpj_gongdanhao()" 

  也就是在 这一行中加入;

  1. <input name="submit"  type="submit"····> 

  3、在产品页加入以下js

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

  4、打开e/admin/ShopSys/classh/ShopSysFun.php文件

  找到以下函数:

  //加入购物车

  function AddBuycar($classid,$id,$pn=1,$add){

  在该函数的结尾加上一个“}”符号

  然后在该函数中找到以下代码,约在该函数的第五行:

  if(empty($classid)||empty($id)||empty($class_r[$classid][tbname]))

  在其上方加入以下代码:

  1. //判断浏览器是否重复提交了表单 
  2. $gd_chongfuPD=$_COOKIE["gd_chongfuPD"]; 
  3. if($gd_chongfuPD==$_GET['gd_yanzhenghao']){ 
  4. $gd_chongfuPD=''
  5. // 发送一个缓存cookie用做判断 
  6. setcookie("gd_chongfuPD",$gd_chongfuPD); 
  7. header("location:/e/ShopSys/buycar/"); 
  8. }else
  9. $gd_chongfuPD=$_GET['gd_yanzhenghao']; 
  10. // 发送一个缓存cookie用做判断 
  11. setcookie("gd_chongfuPD",$gd_chongfuPD); 

【审核人:站长】

收藏   加好友   生成海报   分享
点赞(0)
打赏
Tags: 购物车 购物 帝国CMS 浏览器 360浏览器 帝国
评论(0人参与,0条评论) 雨祺
0/0
  • 请先说点什么
    最新评论

    发布者资料

    热门文章

    技术文摘

    查看更多技术文摘
    首页
    栏目
    搜索
    会员
    投稿