php生成五位数邀请码

php教程评论457 views阅读模式

本篇文章给大家分享的内容是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);
            }
        }
    }

相关推荐:

实例详解php生成.csv后缀文件表格的方法

PHP生成带logo图像二维码的两种方法

以上就是php生成五位数邀请码的详细内容,更多请关注php教程网其它相关文章!

企鹅博客
  • 本文由 发表于 2019年9月6日 10:11:29
  • 转载请务必保留本文链接:https://www.qieseo.com/247304.html

发表评论