Php 生成新用户名并检查是否已存在
我需要自动生成唯一用户名,我创建了两个函数,一个用于创建随机用户名,另一个用于检查用户名是否已存储在数据库中。你认为这两个功能可以工作吗Php 生成新用户名并检查是否已存在,php,Php,我需要自动生成唯一用户名,我创建了两个函数,一个用于创建随机用户名,另一个用于检查用户名是否已存储在数据库中。你认为这两个功能可以工作吗 function km_create_random_username($db_user_conn){ //set the random id length $km_random_username_length = 6; //generate a random id encrypt it and store it in $rnd_id $
function km_create_random_username($db_user_conn){
//set the random id length
$km_random_username_length = 6;
//generate a random id encrypt it and store it in $rnd_id
$km_random_username = uniqid(rand(),1);
//to remove any slashes that might have come
$km_random_username = strip_tags(stripslashes($km_random_username));
//Removing any . or / and reversing the string
$km_random_username = str_replace(".","",$km_random_username);
$km_random_username = strrev(str_replace("/","",$km_random_username));
//finally I take the first 6 characters from the $km_rnd_id
$km_random_username = substr($km_random_username,0,$km_random_username_length);
if(!km_check_random_username($db_user_conn, $km_random_username)){
return $km_random_username;
}
}
function km_check_random_username($db_user_conn, $km_random_username) {
$query = "SELECT km_user_username FROM km_users WHERE km_user_username=?";
$stmt = mysqli_prepare($db_user_conn, $query);
mysqli_stmt_bind_param($stmt, 's', $km_random_username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$rows = mysqli_stmt_num_rows($stmt);
mysqli_stmt_fetch($stmt);
if($rows > 0) {
km_create_random_username($db_user_conn);
}else{
return false;
}
}
要测试代码是否发现重复,然后生成新的randon用户名,请执行以下操作
km\u user
或记录最后一个id
值km\u check\u random\u username()
函数两次,同时手动传递相同的用户名
km_check_random_username($db_user_conn, 'ItsMee');
km_check_random_username($db_user_conn, 'ItsMee');
ItsMee
用户名ItsMe
用户名之后,它是否创建了一个随机的username
?如果是的话,它就会发现Dup并运行再生阶段要测试代码是否发现重复,然后生成新的randon用户名,请执行以下操作
km\u user
或记录最后一个id
值km\u check\u random\u username()
函数两次,同时手动传递相同的用户名
km_check_random_username($db_user_conn, 'ItsMee');
km_check_random_username($db_user_conn, 'ItsMee');
ItsMee
用户名ItsMe
用户名之后,它是否创建了一个随机的username
?如果是的话,它就会发现Dup并运行再生阶段echo gen_random_用户名(10);
//生成jPMNfrQZil
函数gen\u random\u username($db\u user\u conn,$length){
$chars=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”;
$random_username=“”;
对于($i=0;$i<$length;$i++){
$random_username.=$chars[rand(0,strlen$chars)-1];
}
如果(!km\u check\u random\u username($db\u user\u conn,$random\u username)){
返回$random\u用户名;
}
}
//我没有检查这个函数,但是我修改了它以使用上面的函数
//gen_random_用户名($x,$length)。。。
函数km\u check\u random\u用户名($db\u user\u conn,$km\u random\u用户名){
$query=“从km_用户中选择km_用户\用户名,其中km_用户\用户名=?”;
$stmt=mysqli\u prepare($db\u user\u conn,$query);
mysqli_stmt_bind_param($stmt,$s',$km_random_username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_结果($stmt);
$rows=mysqli\u stmt\u num\u rows($stmt);
mysqli_stmt_fetch($stmt);
如果($rows>0){
gen_random_用户名($db_user_conn,10);
}否则{
返回false;
}
echo gen\u random\u用户名(10);
//生成jPMNfrQZil
函数gen\u random\u username($db\u user\u conn,$length){
$chars=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”;
$random_username=“”;
对于($i=0;$i<$length;$i++){
$random_username.=$chars[rand(0,strlen$chars)-1];
}
如果(!km\u check\u random\u username($db\u user\u conn,$random\u username)){
返回$random\u用户名;
}
}
//我没有检查这个函数,但是我修改了它以使用上面的函数
//gen_random_用户名($x,$length)。。。
函数km\u check\u random\u用户名($db\u user\u conn,$km\u random\u用户名){
$query=“从km_用户中选择km_用户\用户名,其中km_用户\用户名=?”;
$stmt=mysqli\u prepare($db\u user\u conn,$query);
mysqli_stmt_bind_param($stmt,$s',$km_random_username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_结果($stmt);
$rows=mysqli\u stmt\u num\u rows($stmt);
mysqli_stmt_fetch($stmt);
如果($rows>0){
gen_random_用户名($db_user_conn,10);
}否则{
返回false;
}
Hi@riggsfully是的,我不知道如何测试它,因为考虑到大量的组合,将不可能找到匹配的用户名。函数km\u create\u random\u username确实创建得很好,如果你认为这是不可能的……你是否没有回答你自己的问题:):)是的,但我如何测试是否在不幸的情况下如果用户名已存储,则将创建一个新的用户名?Hi@RiggsFolly是的,我不知道如何测试它,因为考虑到大量的组合,将不可能找到匹配的用户名km_create_random_username函数创建得很好,如果您认为这是不可能的……您没有回答自己的问题吗问题:):)是的,但我如何测试在用户名已经存储的不幸事件中,是否会创建一个新的用户名?嗯,快到圣诞节了;-)我刚刚使用了km_check_random_用户名($db_user_conn,'ItsMee'));在我将数据库中存储的用户名更改为“ItsMee”并且似乎可以使用后,它确实会将其更改为新的随机用户名。感谢您的支持,它似乎工作得很好。我使用它的方式是使用km_create_random_username($db_user_conn)哦,快到圣诞节了;-)我刚刚使用了km_check_random_username($db_user_conn,'ItsMee');在我将存储在数据库中的用户名更改为'ItsMee'后,它确实会将其更改为新的随机用户名。它似乎工作正常,感谢您的支持。不过,我使用它的方式是使用km_create_random_用户名($db_user_conn)嗨@Safi不确定这是我问的,但另一种生成随机用户名的方法。无论如何,Thanoks嗨@Safi不确定这是我问的,但另一种生成随机用户名的方法。不管怎样,Thanoks