国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

ecshop中紅包編碼生成規則分析和改進

2024-04-25 20:40:58
字體:
來源:轉載
供稿:網友

我們知道在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紅包默認的編碼規則。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金坛市| 孝义市| 奉节县| 郸城县| 彭阳县| 东辽县| 兴海县| 高阳县| 呼伦贝尔市| 柘城县| 昌乐县| 临邑县| 合江县| 丹寨县| 贵定县| 信丰县| 平乡县| 永靖县| 同仁县| 闵行区| 临夏市| 霍林郭勒市| 长白| 万盛区| 朝阳市| 桃源县| 新野县| 苍梧县| 隆尧县| 新闻| 庄河市| 兖州市| 禄丰县| 卢氏县| 孟津县| 察隅县| 新平| 澳门| 建昌县| 腾冲县| 庆城县|