ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字。如果当我们要发放大额度红包的时候,这样的序列号规则难免给人不安全的感觉,万一真的有哪个无聊的人,用一天时间来蒙几个红包序列号出来,那就亏大了。因为最多只要试10000次就可以了,所以我们需要更改一下系统的红包序列号发放规则,让红包的序列号是由a-z,A-Z,0-9的字符组合而成,下面给出修改方法:

1、修改ecs_user_bonus表中bonus_sn字段的数据类型

ECSHOP 2.7.2中该字段类型为bigint,我们需要修改为varchar。

ALTER TABLE  `ecs_user_bonus` CHANGE  `bonus_sn`  `bonus_sn` VARCHAR( 32 ) NOT NULL DEFAULT  ’0′

2、修改js/user.js文件中对红包序列号验证的部分

在文件的672行左右,找到

var reg = /^[0-9]{10}$/;

修改为:

var reg = /^[0-9a-zA-Z]{10,32}$/;

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组成,安全性高的同时,也避免了大批量发放导致的序列号重复问题。

问题:实际中,应该在添加红包类型的时候指定生成红包的规则,毕竟每次活动的规则可能不同。

修改ECSHOP系统红包序列号规律的更多相关文章

  1. ECSHOP如何增加红包序列号字符

    ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字.如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人,蒙几个红包序列号出来 ...

  2. 修改ecshop的70种技巧

    1.如何修改网站”欢迎惠临本店”答复(dafu):languages\zh_cn\common.php文件中,$_LANG['welcome']=’欢迎惠临本店’:将他修改成你需要的字样. 2.如何修 ...

  3. Ecshop系统二次开发教程及流程演示

      来源:互联网 作者:佚名 时间:03-01 16:05:31 [大 中 小] Ecshop想必大家不会觉得陌生吧,大部分的B2C独立网店系统都用的是Ecshop系统,很受用户的喜爱,但是由于Ecs ...

  4. 修改Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析

    简介: 从之前的博文中我们提到过,关机流程中最后是通过修改Android属性进行关机操作(SystemProperties.java通过JNI调用访问系统属性),当然我们也可以通过adb命令修改And ...

  5. 修改linux系统时间的方法(date命令)

    修改linux系统时间的方法(date命令) 来源:互联网 作者:佚名 时间:11-18 23:22:27 [大 中 小] date命令不仅可以显示系统当前时间,还可以用它来修改系统时间,下面简单的介 ...

  6. 修改了系统自带头文件后,Xcode会报错

    1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...

  7. 修改Android系统字号(二)

    /*********************************************************************** * 修改Android系统字号(二) * 说明: * ...

  8. 修改Android系统字号(一)

    /*********************************************************************** * 修改Android系统字号(一) * 说明: * ...

  9. Windows下如何检测用户修改了系统时间并且把系统时间改回来

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows下如何检测用户修改了系统时间并且把系统时间改回来.

随机推荐

  1. redis tcp-backlog配置

    在redis2.8版本中有一个tcp-backlog配置, 说明如下: # TCP listen() backlog.## In high requests-per-second environmen ...

  2. PLSQL 的简单命令之四

    -- 子查询 -- in 等于表中的任意一个 select * from Stu where id in (select id from scores) -- 和子查询返回结果中的某一个值比较成立即可 ...

  3. iOS 图片实现马赛克效果

    /** *实现马赛克效果 */ // 导出CIImage图片 CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImageimageNamed: ...

  4. 异常处理原则--good

    异常机制是现代主流语言的标配,但是异常处理问题虽然已经被讨论很多,也有很多经典书籍的论述,却一直都充满争议.很多人都觉得异常处理很难拿捏,同时也难以理解一些语言或库的异常处理设计.我使用Java近10 ...

  5. autolayout也会锁死

    This application is modifying the autolayout engine from a background thread, which can lead to engi ...

  6. SweetAlert2 使用教程

    SweetAlert2是一款功能强大的纯Js模态消息对话框插件.SweetAlert2用于替代浏览器默认的弹出对话框,它提供各种参数和方法,支持嵌入图片,背景,HTML标签等,并提供5种内置的情景类, ...

  7. hibernate反向生成映射文件报错

    报错原因:可能是你的数据库里的某个表没设置主键.

  8. RMAN-06059: expected archived log not found, loss of archived log compromises recoverability

    归档日志被物理删除后执行rman操作报错: RMAN> backup database plus archivelog; Starting backup at -JUL- :: current ...

  9. OC数组中文排序

    -(void)sortStudentInfo { if(studentInfoArray && studentInfoArray.count > 0) { for(TWDetai ...

  10. 到底UDP和TCP是什么个概念?

    今天在论坛看到一牛人对tcp和udp的解释和区分,突然间恍然大悟. 以下全为拷贝. 在现实生活中,“要想富,先修路”:同时人总要“居有定所”,于是盖起了N多的房子.但是当你和同事商量好去做客的时候却发 ...