日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECSHOP如何增加红包序列号字符

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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組成,安全性高的同時,也避免了大批量發放導致的序列號重復問題。

轉載于:https://www.cnblogs.com/chen-lhx/p/4107810.html

總結

以上是生活随笔為你收集整理的ECSHOP如何增加红包序列号字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。