public function mycode()
{
$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rand = $code[rand(0,25)]
.strtoupper(dechex(date('m')))
.date('d').substr(time(),-5)
.substr(microtime(),2,6)
.sprintf('%02d',rand(0,99));
for(
$a = md5( $rand, true ),
$s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
$d = '',
$f = 0;
$f < 6;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 5 ] ) ) - $g & 0x1F ],
$f++
);
return $d;
}
上述代码会随机生成6位大写字母加数字的邀请码,但是可能会出现邀请码重复的情况
所以每个邀请码进入数据库是都要先查询该邀请码是否存在,如果存在则需要重新生成一个新的邀请码
这样邀请码重复的概率几乎为0
if (Db::name('xinxi')->where('yaoqing',$yaoqing)->find())
{
$yaoqing=$this->mycode();
}
0条评论