如何变更ECSHOP系统红包序列号规则

 我来答
ecshop开发中心
2015-10-31 · TA获得超过577个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:617万
展开全部
1、修改ecs_user_bonus表中bonus_sn字段的数据类型

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(10);
$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']) : ”;

5、修改购物流程中结算部分的红包序列号验证

flow.php 文件 1914行 左右,找到

if (is_numeric($bonus_sn))

更改为

if (is_string($bonus_sn))

到这里修改就完成了,后台清除下缓存就可以为红包生成字母加数字的序列号了,现在生成的序列号是由

a-z、A-Z以及0-9组成,安全性高的同时,也避免了大批量发放导致的序列号重复问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式