先创建一个方法

$username = get_new_user($con);

这个方法先生成一个随机帐号,然后去数据库查询是否已经有了 如果有了就再次递归调用本方法

注意 这个递归在错误的时候没有出口,所以请求该接口的时候应当设置超时退出

function get_new_user($con)
{

//获取唯一用户名 如果存在就再次随机查询
$user_name = randStr();

$sql = "select * from `user` where `username`='{$user_name}'";
if (!$obj = mysqli_query($con, $sql)) {
$resData['msg'] = mysqli_errno($con) . $sql;
$resData['status'] = false;
$res = json_encode($resData, true);
exit($res);
}
if (mysqli_affected_rows($con) == 0) {
return $user_name;
} else {
get_new_user($con);
}
}

核心方法来了

function randStr($len = 6, $format = 'default')
{
switch ($format) {
case 'ALL':
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';
break;
case 'CHAR':
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-@#~';
break;
case 'NUMBER':
$chars = '0123456789';
break;
default :
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
break;
}
mt_srand((double)microtime() * 1000000 * getmypid());
$password = "";
while (strlen($password) < $len)
$password .= substr($chars, (mt_rand() % strlen($chars)), 1);
return $password;
}

邮箱和密码的生成更为简单

$password = randStr();
$email = $key_type . randStr() . "@fake.com";