ECSHOP系统线下发放红包
2016-07-07 15:12 来源:www.chinab4c.com 作者:ecshop专家
ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字。如果当我们要发放大额度红包的时候,这样的序列号规则难免给人不安全的感觉,万一真的有哪个无聊的人,用一天时间来蒙几个红包序列号出来,那就亏大了。因为最多只要试10000次就可以了,所以我们需要更改一下系统的红包序列号发放规则,让红包的序列号是由a-z,A-Z,0-9的字符组合而成,下面给出修改方法: 1、修改ecs_user_bonus表中bonus_sn字段的数据类型ALTER TABLE `ecs_user_bonus` CHANGE `bonus_sn` `bonus_sn` VARCHAR( 200 ) NOT NULL ECSHOP 2.7.2中该字段类型为bigint,我们需要修改为varchar。 2、修改js/user.js文件中对红包序列号验证的部分 在文件的672行左右,找到 var reg = /^[0-9]{10}$/; 修改为: var reg = /^[0-9a-zA-Z]{10}$/; 3、修改admin/bonus.php文件中红包序列号生成规则 在文件的569行左右,注释掉如下两行: /* 生成红包序列号 */ //$num = $db->getOne("SELECT MAX(bonus_sn) FROM ". $ecs->table('user_bonus')); //$num = $num ? floor($num / 10000) : 100000; 修改for循环中序列号的生成规则如下: for ($i = 0, $j = 0; $i < $bonus_sum; $i++) { //$bonus_sn = ($num + $i) . str_pad(mt_rand(0, 9999), 4, ’0′, STR_PAD_LEFT); $bonus_sn = get_unique_id(20); $db->query("INSERT INTO ".$ecs->table('user_bonus')." (bonus_type_id, bonus_sn) VALUES('$bonus_typeid', '$bonus_sn')"); $j++; } 增加生成随机字符加数字的函数: function get_unique_id($length=32, $pool="") { if($pool == "") $pool .= "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; mt_srand ((double) microtime() * 1000000); $unique_id = ""; for ($index = 0; $index < $length; $index++) { $unique_id .= substr($pool, (mt_rand()%(strlen($pool))), 1); } return $unique_id; } 4、修改user.php中添加红包的验证部分 在文件的768行 左右: /* 添加一个红包 */ elseif ($action == ‘act_add_bonus’) { include_once(ROOT_PATH . ‘includes/lib_transaction.php’); //$bouns_sn = isset($_POST['bonus_sn']) ? intval($_POST['bonus_sn']) : ”; $bouns_sn = isset($_POST['bonus_sn']) ? trim($_POST['bonus_sn']) : ”; if (add_bonus($user_id, $bouns_sn)) { show_message($_LANG['add_bonus_sucess'], $_LANG['back_up_page'], ‘user.php?act=bonus’, ‘info’); } else { $err->show($_LANG['back_up_page'], ‘user.php?act=bonus’); } } 将原来的 $bouns_sn = isset($_POST['bonus_sn']) ? intval($_POST['bonus_sn']) : ”; 修改为: $bouns_sn = isset($_POST['bonus_sn']) ? trim($_POST['bonus_sn']) : ”; flow.php f (is_numeric($bonus_sn)) 改成if ($bonus_sn) 到这里修改就完成了,后台清除下缓存就可以为红包生成字母加数字的序列号了,现在生成的序列号是由a-z、A-Z以及0-9组成,安全性高的同时,也避免了大批量发放导致的序列号重复问题。 |
回答:
想法是好想法,但是问题还是存在的序列号重复的问题,原始的不存在序列号重复的问题,存在被猜到的情况,楼主的方法存在重复的问题,虽然几率不是很大 |
最近更新
常用插件
- ecshop二次开发商品购买备
ecshop销售统计 插件介绍:ecshop二次开发订单销售统计和商品购买备注服...
- ecshop会员中心订单excel倒出
ecshop会员中心订单excel倒出...
- ecshop注册推荐送现金插件
ecshop中的促销售功能还不是很完善,随着电子商务系统的发展和进步,...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop2.7.2退换货申请插件
ecshop2.7.2退换货申请插件,主要是在 ecshop 现在的基础上,对ecshop的订单处...
ecshop热门问答
ecshop热门资料
ecshop不能购物
ecshop伪经
ecshop首页轮播图片
ecshop感恩
ecshopSmallAppliances
ecshopHELL
ecshopdaddy
ecshop跟帖
ecshop闹鬼
ecshop外调
ecshop卸载uc
ecshopshow
ecshop搞掂
ecshop探讨
ecshop会员不自动升级
扩展分类
ecshop时尚
ecshop男士
ecshop数字
ecshop单功能
ecshop间歇性
ecshop最新文章
ecshop返利网
ecshop订单导出
ecshop救火
ecshop可惜了
ecshop天天团
ecshop购买记录缩写
qq登陆
ecshop模特