使用PHP生成和分发唯一用户名

使用PHP生成和分发唯一用户名,php,mysql,mysqli,Php,Mysql,Mysqli,我试图从服务器端生成唯一的用户名,并使用用户在登录表单中注册时输入的个人详细信息将其分发给用户。这是为了使用户名更安全,并避免黑客攻击 所以,我的问题是:如何从他们的个人信息中生成唯一的、不可预测的用户名,比如名字、姓氏、年龄和出生日期。用户名不应该像我们现在在gmail这样的注册表单中那样遵循任何顺序。没有什么比使用名字的首字母和姓氏或名字的3个字母更合适的了。。 用户名应该完全不可预测 提前谢谢 那你为什么要让这些名字取决于它们的细节呢?只需生成一些均匀分布的字母字符串,如vwneuibx(

我试图从服务器端生成唯一的用户名,并使用用户在登录表单中注册时输入的个人详细信息将其分发给用户。这是为了使用户名更安全,并避免黑客攻击

所以,我的问题是:如何从他们的个人信息中生成唯一的、不可预测的用户名,比如名字、姓氏、年龄和出生日期。用户名不应该像我们现在在gmail这样的注册表单中那样遵循任何顺序。没有什么比使用名字的首字母和姓氏或名字的3个字母更合适的了。。 用户名应该完全不可预测


提前谢谢

那你为什么要让这些名字取决于它们的细节呢?只需生成一些均匀分布的字母字符串,如
vwneuibx
(足够长,这样你就不会很快就没有名字了),没有人会猜到这样的名字,但记住它也不容易


更安全的方法是将一些盐和您指定的个人数据进行散列。

那么为什么您要让这些名称取决于它们的详细信息呢?只需生成一些均匀分布的字母字符串,如
vwneuibx
(足够长,这样你就不会很快就没有名字了),没有人会猜到这样的名字,但记住它也不容易


更安全的方法是将一些盐和您指定的个人数据进行散列。

idk可能是这样的

function random_name($length){
    $characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $name = "";

    for($i = 0; $i < $length; $i++){
        $name .= $characters[mt_rand(0,strlen($characters) - 1)];

        }
        return $_POST['first'].$name;

    }
函数随机_名称($length){
$characters=“abcdefghijklmnopqrstuvxyz012456789”;
$name=“”;
对于($i=0;$i<$length;$i++){
$name.=$characters[mt_rand(0,strlen($characters)-1)];
}
返回$u POST['first'].$name;
}

idk可能是这样的

function random_name($length){
    $characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $name = "";

    for($i = 0; $i < $length; $i++){
        $name .= $characters[mt_rand(0,strlen($characters) - 1)];

        }
        return $_POST['first'].$name;

    }
函数随机_名称($length){
$characters=“abcdefghijklmnopqrstuvxyz012456789”;
$name=“”;
对于($i=0;$i<$length;$i++){
$name.=$characters[mt_rand(0,strlen($characters)-1)];
}
返回$u POST['first'].$name;
}

如果使用
$characters=$firstName.$lastName.$age.$dateOfBirth
那么您甚至可以满足使用个人信息生成姓名的要求@马特甚至没有考虑过,但那是真的!好东西@马特和伊斯利感谢你们的帮助!我一完成工作就把它发出去。现在我正在用一种不同的方法进行研究,但我会让你知道的。任何建议和评论都是值得欣赏的。如果您使用
$characters=$firstName.$lastName.$age.$dateOfBirth
那么您甚至可以满足使用个人信息生成姓名的要求@马特甚至没有考虑过,但那是真的!好东西@马特和伊斯利感谢你们的帮助!我一完成工作就把它发出去。现在我正在用一种不同的方法进行研究,但我会让你知道的。任何建议和评论都是值得的。值得一提的是,这是一种默默无闻的安全,不太可能提供任何真正的安全好处。你应该让用户选择一个他们可以记住的用户名,并使用盐哈希存储他们的密码,在多次尝试失败后锁定帐户,等等。值得一提的是,这是通过模糊性实现的安全性,不太可能提供任何真正的安全好处。您应该让用户选择一个他们可以记住的用户名,并使用salt散列存储密码,在多次尝试失败后锁定帐户,等等。