您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop增加红包序列号字符的方法
寻春2025-01-20Ecshop商城教程已有人查阅
导读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伪静态商品列表分类category-b0.html中的b0
删除ecshop伪静态商品分类category-b0.html中的b0 使用ecshop的朋友都清楚,启用伪静态规则后默认的分类url看上去不是很美观
ecshop后台0day漏洞原理和利用方法
可以看到如果$filename以”str:”开头那么就调用_eval()函数执行”str:”后面的代码,不过在执行之前系统调用fetch_str函数进行字符查找和替换。
ecshop站内快讯标题的长度字数修改方法
这是一个ECSHOP使用中的小问题,但是群里和论坛里还是经常有人在问,下面共享一下。 进入 后台 》商店设置 》 显示设置, 找到“ 文章标题
ecshop商品详细页获取所在商品分类ID及NAME的方法
问:怎么在ECSHOP的商品详细页面上获取该商品的 分类ID及NAME?答:打开 goods.php 文件,找到
相关源码
-
(自适应)互联网建站网络公司个人工作室网站模板基于PbootCMS内核开发,围绕「技术方案展示」「成功案例库」「服务流程说明」三大模块构建,支持PC与移动端数据实时同步。附带包含客户评价、行业解决方案的完整测试数据包查看源码 -
帝国cms大气淘宝客网站源码带手机版带火车头采集本款创意礼物导购网站模板为礼物类电商平台设计,采用清爽简约的界面风格,具备完善的商品导购功能。系统支持在文章攻略中灵活插入商品购买链接,实现内容与电商的结合。查看源码 -
(自适应响应式)蓝色外贸英文产品介绍展示网站模板本模板采用手工编写的DIV+CSS架构,代码精简高效。适配手机端浏览,数据实时同步更新。内置SEO优化框架,支持独立设置各页面标题、关键词及描述。开源代码结构清晰,便于二次开发。查看源码 -
(自适应)建站广告公司工作室作品展示品牌策划设计pbootcms源码下载基于PbootCMS开发的创意服务展示系统,内置作品集展示、服务流程图等专业模块,预设客户案例、设计流程等创意行业专属栏目结构。查看源码 -
(自适应)平面设计网络工作室个人作品展示网站模板免费下载基于PbootCMS内核开发的响应式网站模板,为设计工作室、创意机构打造的作品展示解决方案。通过模块化布局与极简交互设计,呈现设计作品的视觉细节,支持作品分类、案例解析等多维度展示方式。查看源码 -
(自适应响应式)高端珠宝首饰奢侈品pbootcms模板下载本模板为珠宝首饰及奢侈品行业打造,采用PbootCMS内核开发,具备卓越的视觉表现力与商业转化能力。自适应设计确保在手机端呈现产品细节,后台数据实时同步,助您高效展示钻石查看源码
| 分享笔记 (共有 篇笔记) |
