/* * * 生成vip激活码 * @param int $nums 生成多少个优惠码 * @param array $exist_array 排除指定数组中的优惠码 * @param int $code_length 生成优惠码的长度 * @param int $prefix 生成指定前缀 * @return array 返回优惠码数组 */ public function gene
/** * 生成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
-- ----------------------------