收藏文章 楼主
版块:AB模板网   类型:普通   作者:AB模板网   查看:7438   回复:0   获赞:0   时间:2021-10-15 12:08:52
我们知道在ecshop后台的促销管理里面,有红包的功能。ecshop红包的功能无非就是可以直接抵消现金的作用,ecshop红包有两类型,一种是直接发送到个人帐户上去的。就是存储在ecs_user_bonus表中的,这个一旦发送到客户的帐户上去。那么意味着别人拿到了这个编码,也不能使用这个编码进行抵扣。另外一种ecshop红包就是线下发送的。当你得到这个编码,在红包的有效期内,可以使用该红包。      我们必须知道,ecshop的红包编码是有问题的。我们看flow.php      if (((!empty($bonus) && $bonus['user_id'] == $_SESSION['user_id']) || ($bonus['type_money'] > 0 && empty($bonus['user_id']))) && $bonus['order_id'] <= 0)        这一句表示,就算是该编码没被使用。只要是发到个人帐户去之后。即使你登陆了,也不能通过这个编码来进行使用,所以这就是一大问题。       其次,我们看ecshop红包的编码生成机制。       $num = $db->getOne("SELECT MAX(bonus_sn) FROM ". $ecs->table('user_bonus'));     $num = $num ? floor($num / 10000) : 100000;     for ($i = 0, $j = 0; $i < $bonus_sum; $i++)     {         $bonus_sn = ($num + $i) . str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT);         $db->query("INSERT INTO ".$ecs->table('user_bonus')." (bonus_type_id, bonus_sn) VALUES('$bonus_typeid', '$bonus_sn')");         $j++;     }      首先我们看清楚,当你的红包编码达到了几百完以上,就容易产生重复的编码。其次,在录入红包编码的时候,根本没判断是否有重复的红包,这就造成了很大的问题,如果红包编码重复,那将是非常严重的问题     $db->query("INSERT INTO ".$ecs->table('user_bonus')." (bonus_type_id, bonus_sn) VALUES('$bonus_typeid', '$bonus_sn')");     为了解决这个问题,首先我们必须保证在录入编码之前,确保该编码没重复,所以必须判断数据库中是否有该编码。那么我们就必须对bonus_sn 来进行扫描判断,那么多数据如何提高扫描速度呢。我们必须在bonus_sn上建立索引。其次,我们可以修改红包编码的规则。既然是十位,我们就可以用我们自己的办法来得到。     static function GenSecret($len=6, $type=self::CHAR_WORD)     {         $secret = '';         for ($i = 0; $i < $len;  $i++) {             if ( self::CHAR_NUM==$type ){     if (0==$i) {      $secret .= chr(rand(49, 57));     } else {      $secret .= chr(rand(48, 57));     }             }else if ( self::CHAR_WORD==$type ){                 $secret .= chr(rand(65, 90));             }else{                 if ( 0==$i ){                     $secret .= chr(rand(65, 90));                 } else {                     $secret .= (0==rand(0,1))?chr(rand(65, 90)):chr(rand(48,57));                 }             }         }         return $secret;     }    这个方法,要强过ecshop红包默认的编码规则。

网站模板:https://www.jxmseo.com/list-89-1.html

本文转载于网络,如有侵权请联系删除


全站外链: TEC传感器 | 猫掌外链
 
回复列表
默认   热门   正序   倒序

回复:ecshop中红包编码生成规则分析和改进

网站公告

近期本站被人为恶意注册及发布垃圾帖,每一个发帖都会经过审核,一经发现违法或垃圾帖的用户,帖子将被删除或封号,请大家共同维护互联网环境,共创美好互联网未来。

详细的发帖规则请阅读:

《小猪外链网发帖规则》

《小猪外链网最新金币规则》

注:本站严禁发布灰色违禁违法内容,如发现立刻永久封号,如开通会员的概不退款。

Powered by 小猪外链网 7.12.1

©2015 - 2024 小猪SEO外链平台

备案号:浙ICP备17015142号

免责申明:本网站内容由平台入驻会员撰写,除创始人账号外,其他观点仅代表作者本人,不代表小猪外链网立场。如果内容涉及侵犯其他公司、团体的利益、请联系小猪SEO外链网客服举证删除

您的IP:18.190.156.78,2024-05-19 00:45:59,Processed in 0.14347 second(s).

各位站长请准守小猪SEO外链网的发帖规则,文明理性发言

外链优化

用户名:

粉丝数:

签名:

资料 关注 好友 消息
分享
已有0次打赏