为ECSHOP红包序列号增加字符(里边有错误 要修改)

ECSHOP

系统线下发放红包时系统生成的红包序列号是在

10000

的基础上增加四

位随机数字。

所以我们需要更改一下系统的红包序列号发放规则,

让红包的序列号是由

a-z

A-Z

0-9

的字符组合而成,下面给出修改方法:

 

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 .= 

“abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXY

Z”;

 

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

组成,安全性高的同时,也避免了大批量发放导

致的序列号重复问题。

 

(上述如有不对的地方请大家指正!谢谢大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值