php生成 優惠券 激活碼


/**
     * 生成vip激活碼
     * @param int $nums             生成多少個優惠碼
     * @param array $exist_array     排除指定數組中的優惠碼
     * @param int $code_length         生成優惠碼的長度
     * @param int $prefix              生成指定前綴
     * @return array                 返回優惠碼數組
     */
    public function generateCode( $nums,$exist_array='',$code_length = 6,$prefix = '' ) {
    
        $characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz";
        $promotion_codes = array();//這個數組用來接收生成的優惠碼
    
        for($j = 0 ; $j < $nums; $j++) {
                
            $code = '';
                
            for ($i = 0; $i < $code_length; $i++) {
    
                $code .= $characters[mt_rand(0, strlen($characters)-1)];
    
            }
                
            //如果生成的4位隨機數不再我們定義的$promotion_codes數組里面
            if( !in_array($code,$promotion_codes) ) {
    
                if( is_array($exist_array) ) {
                        
                    if( !in_array($code,$exist_array) ) {//排除已經使用的優惠碼
    
                        $promotion_codes[$j] = $prefix.$code; //將生成的新優惠碼賦值給promotion_codes數組
    
                    } else {
    
                        $j--;
    
                    }
                        
                } else {
                        
                    $promotion_codes[$j] = $prefix.$code;//將優惠碼賦值給數組
                        
                }
    
            } else {
                $j--;
            }
        }
    
        return $promotion_codes;
    }

 上述方法可以直接拷貝使用

 

 下面列出個人優惠券激活碼的數據表設計,各位看官感覺是否有用

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `vip_card`
-- ----------------------------
DROP TABLE IF EXISTS `vip_card`;
CREATE TABLE `vip_card` (
  `id` int(11) NOT NULL,
  `code` char(10) DEFAULT '' COMMENT '激活碼',
  `bid` int(11) DEFAULT '0' COMMENT '購買人',
  `uid` int(11) DEFAULT '0' COMMENT '使用人',
  `dlength` int(11) DEFAULT '0' COMMENT '時長',
  `act_date` date DEFAULT '0000-00-00' COMMENT '激活時間',
  `end_date` date DEFAULT '0000-00-00' COMMENT '結束時間',
  `exp_date` date DEFAULT '0000-00-00' COMMENT '過期時間[如果送激活碼的話,使用這個字段,過期多少天不可激活]',
  `localcity` int(11) DEFAULT '0' COMMENT '城市code',
  `create_time` datetime DEFAULT '0000-00-00 00:00:00' COMMENT '創建時間',
  `is_use` int(5) DEFAULT NULL COMMENT '是否已經使用  0未使用  1已使用',
  PRIMARY KEY (`id`),
  KEY `index_code` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='激活碼';

-- ----------------------------
-- Records of vip_card
-- ----------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM