2009-07-20 8 views
2

J'ai donc un système qui permettra à des utilisateurs spécifiques de créer de nouveaux comptes d'utilisateurs mais, pour plusieurs raisons, ils ne peuvent pas obtenir une liste de tous les utilisateurs du système. Cela peut compliquer la création de nouveaux noms d'utilisateur (s'ils ne peuvent pas voir la liste des noms utilisés)Création de noms d'utilisateur uniques

Existe-t-il des moyens standard pour créer un nom d'utilisateur à partir du prénom et du nom d'une personne? À l'heure actuelle, le système essaie de définir par défaut le premier nom de famille initial ... mais que se passe-t-il s'il s'agit d'un nom pris? Y at-il un moyen facile de créer ce nouveau nom d'utilisateur sans que la personne essaie encore et encore? (Et je préfère ne pas se retrouver avec jsmith1234)

Je PHP, jquery, mySQL à ma disposition

Répondre

13

Vous pouvez toujours utiliser l'adresse électronique de la personne dans l'authentification au lieu d'un nom d'utilisateur traditionnel. Si d'autres personnes ne peuvent pas voir le nom d'utilisateur, ce serait la meilleure approche.

+3

VEUILLEZ UTILISER L'ADRESSE EMAIL! Est-ce que 8 autres personnes peuvent voter très rapidement? Je déteste vraiment les sites qui demandent un nom, puis je mets des restrictions arbitraires quasi-aléatoires (il doit y avoir un nombre, ne doit être que des lettres, doit avoir un nombre et un symbole). Chase m'a juste fait ça quand ils ont violé tout le logiciel adéquat et utilisable de WAMU et je suis tenté de le laisser partir (Ok, donc je suis un peu extrême, mais s'il vous plait, permettez et suggérez une adresse email au lieu de l'utilisateur name) –

+1

@Bill K - Je n'ai jamais rencontré un site qui impose des restrictions non alphanumériques sur un nom d'utilisateur, généralement réservé aux mots de passe. De même, il existe des situations dans lesquelles une adresse électronique n'est pas idéale en tant que nom d'utilisateur unique (par exemple, nommer un personnage pour un jeu en ligne). – zombat

+0

@zombat c'est vrai mais comme je l'ai noté il a dit que d'autres personnes ne verront pas le nom d'utilisateur alors vraiment il n'y a aucune raison de ne pas utiliser un email. –

8

Puisque les noms ne sont pas non plus unique, je ne vois pas comment cela pourrait fonctionner. Fondamentalement, vous devez être en mesure de gérer la collision, ce qui permet également aux gens de choisir leurs propres noms d'utilisateur.

Mon conseil est de ne pas soumettre l'ensemble du formulaire et de le renvoyer à l'utilisateur "nom d'utilisateur non disponible", généralement avec les champs de mot de passe effacés (donc vous devez les saisir à chaque tentative). C'est l'une de mes plus grosses bêtes noires avec des processus d'enregistrement.

Utilisez AJAX pour vérifier la disponibilité. Soit avec un bouton "Vérifier la disponibilité" explicite ou lorsque le champ de texte perd le focus (événement de flou), vous allez vérifier vous-même.

+1

Ceci est ma méthode préférée aussi bien. Généralement, vous n'avez même pas besoin de messages d'erreur spécifiques. J'utilise "Ce nom d'utilisateur n'est pas disponible" pour les doublons, les noms offensants, trop courts/longs, etc. Tant que les exigences sont claires, l'utilisateur ne pensera probablement pas deux fois à un nom d'utilisateur indisponible et passera à autre chose . – zombat

+0

D'accord, ils n'ont pas besoin de voir toute la liste mais vous pouvez toujours les laisser choisir quelque chose. Aussi, assurez-vous que vous avez un moyen de rechercher votre propre nom d'utilisateur. Parfois, les gens oublient s'ils se sont déjà enregistrés sur votre site. – AndyMcKenna

+0

C'est la façon standard de faire les choses normalement. J'essaie de rendre cela aussi facile que possible. Merci pour la réponse – Jason

3

Je suggère ce qui suit. D'abord, créez un algorithme qui donne des noms d'utilisateur possibles, avec un prénom et un nom de famille.

par exemple.

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

pourrait revenir

  • dsmith (première initiale, nom)
  • dasmith (2 premières initiales. Nom)
  • davesmith (prénom. Nom)
  • dave.smith (prénom '.' nom de famille)
  • davsmith (3 initiales, nom de famille)

Vous pouvez commander ce tableau de noms d'utilisateurs possibles en fonction de vos préférences personnelles bien sûr. Vous devez ensuite vérifier l'unicité de ces noms dans la base de données et les fournir sous forme de liste d'options à votre utilisateur.

Bien sûr, si votre base d'utilisateurs devient assez grande, avoir dsmith1 est inévitable, mais au moins, cela encourage les utilisateurs à choisir d'abord quelque chose de plus préférable.

0

Je pense que vous finirez par finir avec jsmith123, mais vous pourriez juste trouver un genre d'algorithme comme.

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

Et ainsi de suite. Si vous n'obtenez finalement pas un nom unique, vous devrez revenir aux nombres, mais vous devriez obtenir 98% de noms sans cela.

Questions connexes