先创建一个方法
$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";
