修改ECSHOP系统红包序列号规律
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系统红包序列号规律的更多相关文章
- ECSHOP如何增加红包序列号字符
ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字.如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人,蒙几个红包序列号出来 ...
- 修改ecshop的70种技巧
1.如何修改网站”欢迎惠临本店”答复(dafu):languages\zh_cn\common.php文件中,$_LANG['welcome']=’欢迎惠临本店’:将他修改成你需要的字样. 2.如何修 ...
- Ecshop系统二次开发教程及流程演示
来源:互联网 作者:佚名 时间:03-01 16:05:31 [大 中 小] Ecshop想必大家不会觉得陌生吧,大部分的B2C独立网店系统都用的是Ecshop系统,很受用户的喜爱,但是由于Ecs ...
- 修改Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析
简介: 从之前的博文中我们提到过,关机流程中最后是通过修改Android属性进行关机操作(SystemProperties.java通过JNI调用访问系统属性),当然我们也可以通过adb命令修改And ...
- 修改linux系统时间的方法(date命令)
修改linux系统时间的方法(date命令) 来源:互联网 作者:佚名 时间:11-18 23:22:27 [大 中 小] date命令不仅可以显示系统当前时间,还可以用它来修改系统时间,下面简单的介 ...
- 修改了系统自带头文件后,Xcode会报错
1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...
- 修改Android系统字号(二)
/*********************************************************************** * 修改Android系统字号(二) * 说明: * ...
- 修改Android系统字号(一)
/*********************************************************************** * 修改Android系统字号(一) * 说明: * ...
- Windows下如何检测用户修改了系统时间并且把系统时间改回来
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows下如何检测用户修改了系统时间并且把系统时间改回来.
随机推荐
- Fluentd安装——通过rpm方式
0. td-agent是何物 为了灵活性,fluentd用Ruby写的,其中一些性能敏感的部件使用c写的.普通的用户直接安装和使用Ruby进程可能有困难,这样就把它封装成Fluentd的稳定版本——t ...
- cocos2dx 3.x(点击屏幕移动精灵,拖动精灵)不需要写回调函数Lua表达式
// // MainScene.cpp // helloworld // // Created by apple on 16/9/19. // // #include "MainScene. ...
- Android 开发环境搭建以及编译
两种搭建编译环境的方式,一种方法是用户安装虚拟机,然后安装基础的Ubuntu12.04.2 系统,利用提供的工具和详细的使用步骤,搭建编译环境:另外一种方法是用户安装虚拟机,然后直接加载 “搭建好的U ...
- weblogic对jms实现的QueueConnection实现与TopicConnection实现问题
今天看了一段之前同事写jms的代码,觉得好像不对,但是不可能,生产上用的代码.刚开始想了下,脑子没转过弯来,后来一想是个简单的问题 代码如下: topicConnection = (TopicConn ...
- 【转】线程、Thread类和线程终止
一.线程Thread启动 0. Thread类实现了java.lang.Runnable接口,即实现了run方法.虽然在Sun JDK中,start()调用了start0()方法,start0()方法 ...
- 当AS3遇见Swift(一)
当AS3遇见Swift 从Hello开始 As3 trace(“Hello Eko”) Swift println(“Hello Eko”) 挺象,有点隔壁王叔叔的意思. 常量和变量 As3 publ ...
- PostgreSQL Replication之第十章 配置Slony(2)
10.2 理解 Slony如何工作 在我们开始复制我们的第一个数据库之前,我们想深入Slony的架构.理解这是如何工作的是非常重要的,否则,将不可能以一种有用的和合理的方法使用这个软件.与事务日志流不 ...
- WebDriver:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms
今天尝试最新的webDriver与fireFox搭配: 运行代码时出现如下的问题,但是浏览器却可以打开: org.openqa.selenium.firefox.NotConnectedExcepti ...
- 夺命雷公狗---node.js---15之加密
node其实也给我们留下了密码的加密发送,不过一般都是用cmd5加密其实也是够了,但是sha1加密也要提下: /** * Created by leigood on 2016/8/31. */ var ...
- 夺命雷公狗—angularjs—5—ng-switch的用法实现下拉更换板块的实现
这个方法一般都会是和别的块状元素进行绑定同时使用的,废话不多说,直接上代码: <!doctype html> <html lang="en"> <he ...