创建唯一的用户名

时间:2009-07-20 23:58:02

标签: php mysql

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

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

现在系统尝试使用第一个姓氏初始化默认...但如果这是一个名字怎么办?是否有一种简单的方法来创建这个新的用户名而不会让这个人一次又一次地尝试? (我宁愿不以jsmith1234结束)

我有PHP,jquery,mySQL供我使用

4 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:8)

由于名字也不是唯一的,我看不出它会如何起作用。基本上你必须能够处理碰撞,这也让人们选择自己的用户名。

我的建议是不提交整个表单,然后将其返回给用户“用户名不可用”,通常清除密码字段(因此您必须在每次尝试时键入这些字段)。这是我注册过程中最大的烦恼之一。

使用AJAX检查可用性。使用明确的“检查可用性”按钮或当文本字段失去焦点(模糊事件)时,您可以自行检查。

答案 2 :(得分:3)

我建议如下。首先创建一个算法,给出可能的用户名,给出名字和姓氏。

e.g。

$foo->genPossibleUserNames('Dave', 'Smith');

可以返回

  • dsmith(首字母,姓氏)
  • dasmith(前2首字母。姓氏)
  • davesmith(名字。姓氏)
  • dave.smith(名字'。'lastname)
  • davsmith(前3首字母。姓氏)

您可以根据个人喜好来订购这一系列可能的用户名。然后,您将检查数据库中这些名称的唯一性,并将其作为选项列表提供给您的用户。

当然,如果你的用户群变得足够大,那么拥有dsmith1是不可避免的,但至少这样可以鼓励用户先选择更优先的东西。

答案 3 :(得分:0)

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

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

等等。如果你最终没有获得一个唯一的名字,你将不得不恢复数字,但如果没有这个名称,你应该得到98%的名字。