Создание уникальных имен пользователей - PullRequest
2 голосов
/ 21 июля 2009

Итак, у меня есть система, которая позволит отдельным пользователям создавать новые учетные записи, но по ряду причин они не могут получить список всех пользователей в системе. Это может затруднить создание новых имен пользователей (если они не видят список используемых имен)

Существуют ли стандартные способы создания имени пользователя из имени и фамилии человека?

Сейчас система пытается установить по умолчанию имя, используя первую начальную фамилию ... но что, если это взятое имя? Есть ли простой способ создать это новое имя пользователя, не заставляя человека пытаться снова и снова? (И я бы предпочел не заканчивать с jsmith1234)

В моем распоряжении PHP, jquery, mySQL

Ответы [ 4 ]

13 голосов
/ 21 июля 2009

Вы всегда можете использовать адрес электронной почты человека при аутентификации вместо традиционного имени пользователя. Если другие люди не видят имя пользователя в любом случае, это был бы лучший подход.

8 голосов
/ 21 июля 2009

Поскольку имена не уникальны, я не вижу, как это будет работать. По сути, вы должны уметь обрабатывать коллизии, что также позволяет людям выбирать свои собственные имена пользователей.

Мой совет, однако, не отправляйте всю форму целиком, а затем возвращайте ее пользователю "username not available", обычно с очищенными полями пароля (поэтому вы должны вводить их при каждой попытке). Это одна из моих самых больших домашних любимцев с процессами регистрации.

Используйте AJAX для проверки доступности. Либо с явной кнопкой «Проверить доступность», либо когда текстовое поле теряет фокус (событие размытия), вы можете проверить себя.

3 голосов
/ 21 июля 2009

Я бы предложил следующее. Сначала создайте алгоритм, который дает возможные имена пользователей, учитывая имя и фамилию.

например.

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

может вернуть

  • дсмит (первая фамилия, имя)
  • Дасмит (первые 2 инициала. Фамилия)
  • Дейвсмит (имя. Фамилия)
  • dave.smith (имя '.' Фамилия)
  • Давсмит (первые 3 инициала. Фамилия)

Вы бы упорядочили этот массив возможных имен пользователей, исходя из ваших личных предпочтений. Затем вы проверите базу данных на предмет уникальности этих имен и предоставите их в виде списка опций для вашего пользователя.

Конечно, если ваша пользовательская база становится достаточно большой, наличие dsmith1 неизбежно, но, по крайней мере, так оно побуждает пользователей сначала выбрать что-то более предпочтительное.

0 голосов
/ 21 июля 2009

Я думаю, что в конечном итоге вы получите jsmith123, но вы можете просто придумать какой-нибудь алгоритм вроде.

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

И так далее. Если в итоге вы не получите уникального имени, вам придется вернуться к номерам, но вы должны получить 98% имен без этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...