zoukankan      html  css  js  c++  java
  • 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}$/;

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

  • 相关阅读:
    集成信鸽推送!!!
    URI跳转方式地图导航的代码实践
    CocoaPods 的详细使用教程
    学习如何学习
    代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
    宏!!!!(拷贝别人的博客的只为了收藏)
    不修改Xcode项目加载Reveal
    关于开发中的常用手段(个人建议)
    ios高级-属性中Copy的使用
    iOS高级-RunLooper
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/4107810.html
Copyright © 2011-2022 走看看