Nous voulons créer des champs de saisie pour le prénom et le nom d'un utilisateur. Quelles devraient être les limites minimales et maximales, le cas échéant, et pourquoi?
En théorie, la bonne réponse n'est pas de limite supérieure pour la longueur des noms. Autorisez l'utilisateur à saisir ce que son nom utilise, quels que soient les caractères à sa disposition, afin que vous ne rencontriez jamais une situation où quelqu'un ne peut pas entrer son vrai nom valide.
Dans la pratique, cela n'est pas possible à mettre en œuvre.
Il doit y avoir des limites.
Ces limitations peuvent être subjectives, comme ce qui constitue un "vrai" nom afin que vous ne vous retrouviez pas avec des noms comme:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
À cette fin, Facebook, par exemple, a un système assez simple ensemble de contraintes ils appliquent:
Les noms ne peuvent pas inclure:
- Symboles, chiffres, majuscules inhabituelles, répétition de caractères ou ponctuation
- Caractères de plusieurs langues
- Titres de toute nature (ex: professionnels, religieux, etc.)
- Mots, phrases ou surnoms à la place d'un deuxième prénom
- Contenu offensant ou suggestif de toute nature
La longueur n'est pas explicitement mentionnée, cependant selon this SO post la limite est actuellement de 50 caractères.
Dans Active Directory, l'attribut Display-Name
Est limité à 256 caractères.
Ce ne sont que deux exemples qui varient. Vous pouvez rechercher plusieurs services pour voir leurs limites de longueur, mais la vérité est que vous devez décider par vous-même de ce qui est acceptable.
Il y a une limitation qui n'est pas subjective: sécurité .
Toute interface qui accepte et intériorise les entrées des utilisateurs doit absolument considérer les entrées comme une menace qui doit être validée et désinfectée. L'entrée doit être validée pour garantir qu'elle est du type, de la longueur, du format et de la plage corrects.
L'entrée doit être nettoyée pour éviter petites tables de bobby de gâcher votre journée. Mais dans le cas où une faiblesse de votre assainissement est découverte, l'étape de validation (y compris la vérification de la longueur) offre une protection en limitant la façon dont l'attaquant peut exploiter une vulnérabilité.
Il existe une autre limitation objective: capacité de stockage .
Il n'y a personne dans aucune culture dans le monde entier qui ait un nom qui a légitimement 1 073 741 823 octets (la limite supérieure d'un type de données ntext
dans SQL Server). Mais même cela est une limite qui est une limitation technique du magasin de données.
Le problème est qu'aucune limite n'est pas une option pour plusieurs raisons; certains sans doute subjectifs tandis que d'autres objectifs, réels et inévitables.
Mais nous ne voulons pas non plus que les utilisateurs soient indûment limités.
Un système bien conçu garantira que les deux besoins sont satisfaits sans que l'utilisateur sache qu'il existe une limitation en place pour commencer. Il doit être sécurisé et utilisable de manière transparente.
À cette fin, je pense qu'une limite raisonnable devrait être (arbitrairement) 25% plus longue que le nom le plus long dans votre ensemble de données actuel. Étant donné un échantillon suffisamment grand, cela devrait garantir que vous donnerez suffisamment de marge de manœuvre à vos utilisateurs, mais ne permettrez pas à un utilisateur malveillant d'essayer d'exploiter votre système.
Étant donné la diversité des noms, je ne voudrais pas ...
Selon le pays/le contexte culturel d'une personne, elle peut avoir un [prénom] [nom] plus occidentalisé, mais pas. Pourquoi empêcher éventuellement les utilisateurs d'entrer leur nom complet en raison de limites arbitraires?
Si votre raison de fractionner le prénom et le nom de famille dans des champs séparés est pour que vous puissiez éventuellement adresser un utilisateur par son prénom ou son nom, je suggérerais de fournir un champ supplémentaire facultatif pour l'utilisateur demandant son surnom ou comment il aimerait être adressée.
50 caractères (dont 15 à 25, selon la disposition, sont visibles dans le champ de saisie du formulaire) pour le nom de famille devraient suffire. C'est ce qui fonctionne bien pour moi, de toute façon. Par souci de cohérence, il convient d'attribuer le même montant au (x) prénom (s).
J'ai décidé pour le nombre 50 il y a une dizaine d'années parce que le plus long réaliste nom que j'ai pu trouver ad hoc était de 15 caractères, et 3x15 = 45 (3x pour être sûr), arrondi à 50. J'utilise ce nombre magique depuis lors, et jusqu'à présent, je n'ai eu aucune plainte. Je n'en attendais pas non plus.
Oui, dans un monde idéal, il ne devrait y avoir aucune limite, et chaque limite que vous choisissez est "fausse" au moment où vous la choisissez. Cependant, nous vivons dans un monde réel où le stockage (et l'espace d'écran) est limité et où les formes doivent être disposées de manière sensée et significative.
Si vos parents décident de vous donner un nom de 350 lettres, le greffier du bureau d'enregistrement vous dira que vous n'avez pas de chance d'obtenir un passeport avec ce nom également. Non, ils ne feront pas un passeport extra-large juste pour vous.
Le plus long revendiqué nom de famille attribué à une personne présumée a 35 lettres, bien que le nom ("Wolfeschlegelsteinhausenbergerdorff") ressemble beaucoup plus à un canular qu'à un vrai nom. Bien qu'il puisse s'agir d'une personne réelle qui délibérément a choisi un tel nom pour se rendre important, vous ne pouvez jamais le savoir.
J'en doute, cependant, car en particulier lorsque vous regardez le mème bien connu Wolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenshaftschafers [...] qui n'est pas un nom allemand mais un récit entier dans une sorte d'allemand Pidgin qui se traduit grossièrement par quelque chose comme "... qui il y a longtemps étaient des bergers diligents dont l'équipement bien entretenu sans diligence et de protection très diligent qui [3 autres niveaux d'indirections et plus de bla bla non-sensé]", il apparaît comme une connerie complètement inventée.
Il est vrai que c'est une histoire légèrement différente pour M. Preston du Lancashire, qui à toutes les apparences est une vraie personne avec un parent fou (ou deux parents fous), mais en fait pas tellement différent.
Monsieur. Preston ne sera pas gravement atteint (et il n'y aura aucune chance de le confondre avec quelqu'un d'autre) s'il ne peut inscrire "Jensen Jay Alexander Bikey Carlisle Duff Elliott" que pour son (ses) prénom (s). Il ne voudra probablement utiliser que "Jensen Jay" ou "Jay" de toute façon, et maudira son père chaque fois que les enfants à l'école se moqueront de ses noms.
Même la plupart des noms existants pour emplacements (qui sont généralement beaucoup plus longs que les noms donnés aux personnes) peuvent contenir 50 caractères, le nom maori d'une petite colline en Nouvelle-Zélande étant l'exception. Puisqu'il n'y a qu'environ 60 000 personnes qui parlent cette langue du tout, et la plupart des gens sur la planète n'ont probablement jamais entendu parler de cette colline sans importance, c'est plutôt négligeable.
Le nom de tout autre emplacement existant sur la planète s'inscrira dans ces contraintes au moins avec sa forme courte (1 endroit au Pays de Galles) ou complètement (tout autre endroit connu).
En fonction du type d'application, vous souhaiterez peut-être sélectionner une limite supérieure ou inférieure pour les noms. La limite supérieure, bien qu'une approche délicate, la limite inférieure peut être de 1 car la personne peut choisir d'écrire une initiale au lieu du nom complet. Si votre système nécessite un nom, vous ne voudriez évidemment pas que l'utilisateur quitte sans entrer un nom.
La sélection de la limite supérieure sur les caractères dépendra également du type de mise en œuvre et du public cible que vous prévoyez d'héberger.
Si votre mise en œuvre est de l'ordre des réseaux sociaux, vous pouvez laisser l'utilisateur définir un nom exceptionnellement long, eh bien, c'est un réseau social, vous ne pouvez donc pas empêcher l'utilisateur de devenir fou. Cependant, vous pouvez le guider en limitant à une certaine limite supérieure (sinon ils peuvent vouloir insérer un message long de 1024 caractères comme nom lui-même). L'augmentation de l'UX est très importante, mais il y a toujours un compromis quelque part, donc si vous supprimez le concept du prénom et du nom et fournissez un seul champ pour le nom avec par exemple 300-350 caractères comme limite supérieure, il sera assez long pour expérimenter et mais suffisamment court pour que votre site reste sain d'esprit.
Pour un ordre de réseautage semi/non social où vous attendez des gens qui attendent des informations et qui peuvent être plutôt sérieux (du moins pas dans l'ambiance des réseaux sociaux), ils peuvent préférer rester simples et réalistes en ce qui concerne les noms. Vous pouvez choisir de définir une limite autour de 100 à 125 caractères sûrs pour chacun des premier et deuxième noms. Il est assez évident que nous ne pouvons pas juger le genre de noms que nous pourrions rencontrer, il faudra donc être généreux en le limitant.
De plus, vous voudrez peut-être restreindre l'utilisation de caractères spéciaux dans le nom (encore une fois en fonction de l'implémentation), bien que cela ne soit pas lié à la question que vous avez posée, mais cela apparaissait dans ma tête à maintes reprises, alors je viens de le partager.