创建独特的用户名

4

我有一个系统,允许特定用户创建新用户帐户,但由于几个原因,他们无法获取系统上所有用户的列表。这可能会使创建新用户名变得困难(如果他们看不到已使用名称的列表)

是否有任何标准方法可以根据人的名字和姓氏创建用户名?

现在,该系统尝试使用名字的第一个字母和姓氏作为默认...但是如果那是一个已被使用的名字怎么办?有没有一种简单的方法来创建这个新的用户名,而不是让人一次又一次地尝试?(我不想最终得到jsmith1234这样的结果)

我可以使用PHP、jquery和mySQL。

4个回答

14
您可以始终在身份验证中使用个人的电子邮件地址,而不是传统的用户名。如果其他人无法看到用户名,这将是最好的方法。

3
请使用电子邮件地址!可以让其他8个人迅速投票支持。我真的很讨厌那些要求输入姓名,然后又施加任意的伪随机限制(必须有一个数字,只能是字母,必须有数字和符号)。当JP摩根银行收购万通银行时,他们就这样对待了我,把所有实用的软件都强行替换了,我因此想离开(好吧,我可能有点极端,但请允许并建议用户使用电子邮件地址而不是用户名)。 - Bill K
1
@Bill K - 我从未遇到过强制对用户名施加非字母数字限制的网站,通常这种限制只用于密码。此外,在某些情况下,电子邮件地址并不是作为唯一用户名的理想选择(例如为网络游戏命名角色)。 - zombat
@zombat 这是真的,但正如我所指出的,他说其他人看不到用户名,所以没有理由不使用电子邮件。 - Kane Wallmann
谢谢,这正是我需要做的。简单明了。 - Jason
您可以使用电子邮件地址作为登录的唯一标识符,并让用户选择一个单独的用户名,当他们查看其账户(或个人资料或角色表等)时可见。要求提供电子邮件地址可以为您处理唯一性标准,一旦他们登录,您可以称呼他们想要的任何名称,即使它与其他人的名称冲突也没关系。只需记住,在执行查询时选择电子邮件地址而不是显示名称。 - octern

8
由于名称也不是唯一的,我看不出这该怎么做。基本上你必须能够处理冲突,这也让人们可以选择自己的用户名。
我的建议是不要提交整个表单,然后返回“用户名不可用”的消息给用户,通常还会清除密码字段(因此您必须在每次尝试时重新输入密码)。这是我对注册过程最大的不满之一。
使用 AJAX 来检查可用性。可以通过显式的“检查可用性”按钮或者当文本字段失去焦点(模糊事件)时自动检查。

1
这也是我首选的方法。通常情况下,你甚至不需要特定的错误信息。对于重复的用户名、冒犯性的用户名、太短或太长等情况,我会使用“该用户名不可用”。只要需求清晰明确,用户很可能不会再考虑一个不可用的用户名,而会继续思考其他的用户名。 - zombat
同意,他们不需要看到整个列表,但你仍然可以让他们选择某些东西。此外,请确保有一种方法来查找自己的用户名。有时人们会忘记是否已经在您的网站上注册。 - AndyMcKenna
这是我们通常做事情的标准方式。我正在尽可能地让它变得简单。谢谢你的答案。 - Jason
1
我喜欢使用 AJAX 检查用户名是否可用/密码是否符合要求的网站。这只是一个小巧妙的设计,但它告诉我程序员尊重我,愿意为我节省时间和烦恼。(或许他们不屑一顾,但是他们有足够的自豪感建造了一个拥有21世纪用户界面的网站。那也很好。) - octern

4
我建议如下。首先创建一个算法,根据名字和姓氏给出可能的用户名。
例如:
$foo->genPossibleUserNames('Dave', 'Smith');

“could return” 的意思是“可能返回”。
以下是文本的翻译:

可能返回

  • dsmith(名字首字母,姓氏)
  • dasmith(前两个字母。姓氏)
  • davesmith(名字。姓氏)
  • dave.smith(名字 '.' 姓氏)
  • davsmith(前三个字母。姓氏)

当然,您会根据个人喜好对这些可能的用户名进行排序。然后,您将检查数据库以确保这些名称的唯一性,并将它们作为选项列表提供给您的用户。

当然,如果您的用户群变得足够大,那么使用dsmith1是不可避免的,但至少这样可以鼓励用户首先选择更合适的用户名。


0

我认为你最终会以jsmith123结束,但你可以想出一些算法来。

Person: John Smith
Try1: johnsmith
Try2: smithjohn
Try3: jsmith
Try4: johns
Try5: johnsm
Try6: johnsmi

等等。如果最终你没有得到一个唯一的名字,你就必须回到数字,但你应该能够得到98%的名称而不需要那样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接