2009-07-20 6 views
2

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

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

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

У меня есть PHP, JQuery, MySQL в моем распоряжении

ответ

13

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

+3

ПОЖАЛУЙСТА, ИСПОЛЬЗУЙТЕ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ! Могут ли 8 других людей проголосовать за это очень быстро. Я действительно ненавижу сайты, которые просят имя, а затем произвольные квази-случайные ограничения на него (должны иметь число, должно быть только буквы, должны иметь число и символ). Чейз только что сделал это со мной, когда они изнасиловали все подходящее и полезное программное обеспечение WAMU, и я соблазн оставить его (ладно, так что я немного экстремален, но просто разрешите и предложите адрес электронной почты вместо пользователя name) –

+1

@Bill K - Я никогда не сталкивался с сайтом, который заставляет не-буквенно-цифровые ограничения на имя пользователя, обычно это зарезервировано для паролей. Кроме того, бывают ситуации, когда адрес электронной почты не идеален как уникальное имя пользователя (например, имя персонажа для веб-игры). – zombat

+0

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

8

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

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

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

+1

Это мой предпочтительный метод. Как правило, вам даже не нужны конкретные сообщения об ошибках. Я использую «То, что имя пользователя недоступно» для повторяющихся имен, оскорбительных имен, слишком коротких/длинных и т. Д. Пока требования ясны, пользователь, скорее всего, не подумает дважды о недоступном имени пользователя и перейдет к мысли о другом , – zombat

+0

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

+0

Это стандартный способ, который мы делаем обычно. Я стараюсь сделать это как можно проще. Спасибо за ответ – Jason

3

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

например.

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

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

  • митского (первая исходная, LASTNAME)
  • dasmith (первые 2 инициалы. ЬавЬЫате)
  • davesmith (первое имя. Фамилия)
  • dave.smith (firstname '.' lastname)
  • davsmith (первые 3 инициалы. фамилия)

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

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

0

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

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

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