本篇文章给大家分享的内容是php生成五位数邀请码,有着一定的参考价值,有需要的朋友可以参考一下
model/**
* 生成邀请码
* @param $uid
* @return string
*/
public function initcode() {
$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rand = $code[rand(0,25)]
.strtoupper(dechex(date('m')))
.date('d').substr(time(),-5)
.substr(microtime(),2,5)
.sprintf('%02d',rand(0,99));
for(
$a = md5( $rand, true ),
$s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
$d = '',
$f = 0;
$f < 5;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
$f++
);
return $d;
}
/**
* 是否重复
*/
public function recode($code) {
if ($this->where('code='.$code)->find()) {
return false;
}
return true;
}
action/**
* 我的邀请码
* @author zhangfeng
*/
public function mycode() {
$model = M('Usercode');
$uid = ($_GET['uid']);
$code = $model->is_code($uid);
$this->assign('code', $code);
if (!$code) {
$code = $this->getcode($model, $uid);
$res = $model->savecode($uid, $code);
if ($res) {
$this->assign('code', $code);
} else {
$this->assign('code', '邀请码生成失败!,错误:'.$model->getError());
}
}
$this->display();
}
/**
* 递归函数获取绝对不重复邀请码
* @author zhangfeng
* @param $model
* @param $uid
* @return mixed
*/
private function getcode($model, $uid) {
$code = $model->initcode($uid);
if ($model->recode($code)) {
return $code;
} else {
while(true) {
$this->getcode($model, $uid);
}
}
}
相关推荐: