您现在的位置是:首页 > 教程 > ecshop商城教程ecshop商城教程
ecshop增加红包序列号字符的方法
寻春2025-01-20 18:22:57ecshop商城教程已有人查阅
导读ecshop系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字。如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人
ecshop系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字。如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人,蒙几个红包序列号出来,那就亏大了,因为最多只要试10000次就可以了,所以我们需要更改一下系统的红包序列 号发放规则,让红包的序列号是由a-z,A-Z,0-9的字符组合而成,这样也可以防止网站大量发放红包导致序列号重复。如此实用的功能,教程将给出修改方法:
1、修改ecs_user_bonus表中bonus_sn字段的数据类型
ECSHOP 2.7.2中该字段类型为bigint,我们需要修改为varchar。
在文件的672行左右,找到
在文件的569行左右,注释掉如下两行:
在文件的778行 左右:
flow.php 文件 1914行 左右,找到
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}$/;
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中添加红包的验证部分在文件的778行 左右:
/* 添加一个红包 */
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模板原理分析
类似Smarty/ECShop这类模板的原理。1.首先是编译模板ECShop/Smart是利用PHP引擎,所以编译的结果是一个PHP文件,其编译过程就是 -
ecshop商城会员注册怎么实现注册自动发送邮件
从数据库入手 用mysql管理工具找到 ecs_mail_templates 表插入一条 注册发送邮件的数据template_content 是邮件发邮件内容字段 根据自己的需要编辑不同的内容 当然等你添加成功后 -
ecshop教程在首页或列表页显示商品简单描述的方法
熟悉ECSHOP的朋友都知道,在后台商品编辑的地方有一个录入“商品简单描述”的框框,但是录入的“商品简单描述”没有很好的在前台显示出来 -
ecshop默认模板左下角LOGO图标怎么删除
用户有两种选择方案:(1)、用自己的Logo图标替换掉原来的:(2)、删除ECSHOP默认的Logo图标:
留言与评论 (共有 条评论) |