ecshop系統線下發放紅包時系統生成的紅包序列號是在10000的基礎上增加四位隨機數字。如果當我們要發放大額度紅包的時候,這樣的序列號規 則難免給人不安全的感覺,萬一有無聊的人,蒙幾個紅包序列號出來,那就虧大了,因為最多只要試10000次就可以了,所以我們需要更改一下系統的紅包序列 號發放規則,讓紅包的序列號是由a-z,a-z,0-9的字元組合而成,這樣也可以防止**大量發放紅包導致序列號重複。如此實用的功能,教程將給出修改方法:
1、修改ecs_user_bonus表中bonus_sn欄位的資料型別
ecshop 2.7.2中該字段型別為bigint,我們需要修改為varchar。
altertable `ecs_user_bonus` change `bonus_sn` `bonus_sn` varchar( 32 ) not
null
default'0
';
2、修改js/user.js檔案中對紅包序列號驗證的部分
在檔案的672行左右,找到
var reg = /^[0-9]$/;修改為:
var reg = /^[0-9a-za-z]$/;
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++)
/*增加生成隨機字元加數字的函式:
*/function get_unique_id($length=32, $pool="")
return
$unique_id
;}
4、修改user.php中新增紅包的驗證部分
在檔案的778行 左右:
/*新增乙個紅包
*/elseif ($action =='act_add_bonus')
else
}將原來的
$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組成,安全性高的同時,也避免了大批量發放導致的序列號重複問題。
Oracle給查詢結果增加序列號
在oracle中,需要加乙個序列號,首先想到是用rownum這個關鍵字,比如sql如下 select rownum,t.from table t以上sql如果不增加排序,這個資料沒有問題,一旦增加排序,序列號就錯亂了 select rownum,t.from table t order by t.s...
WPF下給DataGrid自動增加序列號
c 下使用wpf框架程式設計時,有時需要給datagrid新增序號,實現方式一般兩種,一種方式是通過 loadingrow,自動在列前邊增加一列序號,該列為自動新增,沒有列名字。另一種是自定義一列顯示序號。下邊我們看看具體的實現方式。1 自動增加一列顯示序號 效果如圖 實現方式 給datagrid新...
如何得到硬碟序列號 C
硬碟序列號 serial number 不等於卷標號 volume name 後者雖然很容易得到,但是格式化分割槽後就會重寫,不可靠。遺憾的是很多朋友往往分不清這一點。要得到硬碟的物理序列號,可以通過wmi,也就是win32 physicalmedia.serialnumber。可惜的是window...