8792 sujets

Développement web côté serveur, CMS

Bonjour à tous,
Ca y est, j'ai décidé de me mettre au regex Smiley biggrin et fini les multiples conditions pour tester tous les champs de mon formulaire.

Voilà j'aurais besoin de vos lumières.

J'ai commencé à écrire mon 1er regex pour vérifier le nom de famille d'un visiteur :
#^[a-z][a-z-éèçàù']{0,18}[a-zéèçàù]$#i


Explication :

1) ^[a-z] Vérification que la 1ère lettre fait partie de l'alphabet

2) [a-z-éèçàù']{0,18} Vérification qu'il y ait 0 ou 18 caracteres (lettres ou - é è ç à ù)

3) [a-zéèçàù]$ On vérifie que ça se termine pour les mm choses qu'au dessus mais sans le tiret

4) le i à la fin pour dire que ce n'est pas sensible à la casse

Pour ma partie 2, comment faire pour vérifier qu'il n'y ait pas 2 tirets qui se suivent ? car on n'a jamais vu 2 tirets à la suite dans un nom de famille Smiley decu .
Et aussi, y a-t-il d'autres caractères qu'on peut rencontrer dans un nom de famille?
Dernière question, pensez-vous que je dois autoriser les espaces dans le nom ?

Merci à tous
Modifié par raffoul (24 May 2007 - 14:35)
Salut,
raffoul a écrit :
Vérification qu'il y a 0 ou 18 (lettres ou - é è ç à ù)

Euh... Pourquoi 18 Smiley hein
Pour que le nom de famille contienne 20 caractères max. Perso, j'ai jamais vu des noms de famille plus long, non ?
Je monte à 25 caractères max pour être sûr ?
Modifié par raffoul (24 May 2007 - 00:10)
Salut
a écrit :
lettres ou - é è ç à ù

Et les autres lettres accentuées ? (tréma, circonflexe). Il me semble que \w à la place de a-z inclut les accents mais c'est à vérifier.

a écrit :
comment faire pour vérifier qu'il n'y ait pas 2 tirets qui se suivent

En faisant des groupes répétitifs :
n lettres suivies de 0 ou 1 tiret, le tout répété m fois

a écrit :
pensez-vous que je dois autoriser les espaces dans le nom ?

Oui, sans quoi Jean-Marie s'en trouverait lésé Smiley ohwell

a écrit :
y a-t-il d'autres caractères qu'on peut rencontrer dans un nom de famille?

L'apostrophe (L' pour les Bretons par exemple)
jeje a écrit :
pensez-vous que je dois autoriser les espaces dans le nom ?

Oui, sans quoi Jean-Marie s'en trouverait lésé Smiley ohwell
Tu veux parler de Jean-Marie de La Fontaine je suppose Smiley biggol
Administrateur
Bonjour,

20 lettres max? Ca peut largement dépasser 20 lettres:
- les enfants peuvent porter les noms accolés de leurs 2 parents,
- la noblesse peut avoir des noms à rallonges,
- des ressortissants de l'Union Européenne travaillent en France (ne serait-ce qu'à Paris-les-ambassades ou Strasbourg-la-capitale-européenne) et il doit y avoir quelques finlandais dans ce cas (leurs noms communs sont interminables en tout cas)
- parmi les personnes d'origine malgache, le nom le plus court que j'aie connu faisait 14 lettres,
- etc

Pour l'espace, entre les "de gallouzeau de villepin", les "le qqch", "van der ..." et les personnes qui accolent les 2 noms des parents avec un espace plutôt qu'un trait d'union ...

Pour les caractères "exotiques" (pour un français), il y a les voyelles scandinaves déjà citées (Mynd you, møøse bites kan be pretty nastï Smiley rolleyes ), les diacritiques polonais et surtout tchèques ou slovaques. Et hongrois aussi probablement, enfin tout le iso-8859-2 doit y passer Smiley cligne

edit: subjonctif
Modifié par Felipe (24 May 2007 - 10:10)
Question à se poser: pourquoi valide-t-on les données saisies par l'utilisateur ?

- On peut avoir besoin de recueillir un type de données spécifique, ayant des critères fonctionnels de validité nécessaires à un traitement (cas-type: une date).
- On peut vouloir aider l'utilisateur à identifier et à rectifier ses éventuelles erreurs de saisie (cas-type, le mot de passe et par exemple le champ de confirmation accolé au champ de saisie).

Question suivante: y a-t-il quelque-chose à valider pour l'une ou l'autre de ces deux raison concernant le nom d'un utilisateur ?
Laurent Denis a écrit :
Question suivante: y a-t-il quelque-chose à valider pour l'une ou l'autre de ces deux raison concernant le nom d'un utilisateur ?

Une chose peut-être : que celui-ci n'est pas vide. Smiley ravi
Merci à tous

Laurent Denis a écrit :

Question suivante: y a-t-il quelque-chose à valider pour l'une ou l'autre de ces deux raison concernant le nom d'un utilisateur ?


Si t'as un espace membres, regarde les noms de famille, tu comprendras lol, alors ça y a de tout et je me demande parfois comment des chiffres peuvent arriver dans des noms. Au moins, là, on sera sûr qu'il comporte au moins des caractères existants dans les noms.

Réponse à Jeje, j'avais mis l'apostrophe dans le regex Smiley cligne mais peut être pas dans l'explication aussi.

Je vais augmenter la longueur du nom à 35, j'ai pas non plus envie d'avoir un text pour un nom dans ma base de données lol.
2ème solution, je vais aller tester sur un gros site homme hotmail pour voir jusqu'à combien ils acceptent et qu'est-ce qu'ils utilisent pour vérifier tout ça.

Bon je vais essayer d'améliorer mon regex et je vous tiens au courrant.
raffoul a écrit :

J'ai commencé à écrire mon 1er regex pour vérifier le nom de famille d'un visiteur :


je ne comprend pas la démarche, s'il s'agit de débuter pourquoi ne pas le faire sur quelque chose de simple et d'utile ?

. En travaillant sur du simple ça permet d'avoir un code transparent pour soi même et donc de prendre de l'aplomb. Dans ton cas la complexité des situations qu'a évoquées Felipe rend la chose difficile. Et au passage la question pourtant toute bête de la taille de la chaine de caractères t'entraine dans des considérations un peu absurdes... Tu dis que tu vas t'arrêter à 35 mais dans ce cas moi je te dirai que 36 c'est mieux parce que "on ne sait jamais" et en pure logique d'autres incrémenteront cela dans une boucle interminable. Alors qu'en fait il suffit de se dire que la longueur de la chaine n'est pas un paramètre pertinent.

. En travaillant sur de l'utile ça permet dès le départ d'appréhender une technique en la contextualisant.

Bon le 2ème point fait un peu surcouche de ce que dit déjà Laurent. Mais c'est vrai que c'est quand même un plus pour un débutant de ne pas partir à corps perdu dans du codage, et de se demander après où il est rendu.
Modifié par Christian Le Bouler (24 May 2007 - 12:54)
raffoul a écrit :
j'avais mis l'apostrophe dans le regex Smiley cligne mais peut être pas dans l'explication aussi.

Ah ben oui, c'est pour ça Smiley langue

Pour en revenir au fond, je suis assez d'accord avec Laurent. Imposer une plage de caractères pour un pseudo, je peux comprendre (facilité de gestion de l'encodage, eviter les soucis avec les caractères spéciaux, éviter des pseudos à ralonge qui peuvent flinguer l'affichage, s'affranchir des algo de comparaison qui estiment que é==e et qui font peut-être que mon pseudo est jeje et pas jéjé Smiley rolleyes ), mais pour un nom, ça suppose une utilité civile (identification pour un paiement par exemple), et là il faut bien compter sur l'honnêteté des gens. Et à mon avis, une page de confirmation avec récapitulatif des données saisies est plus adapté.

Ce qui ne doit pas t'empécher d'apprendre à faire de jolies expressions régulières Smiley cligne
Quand je dis mon 1er regex, c'est mon 1er compliqué car j'ai fais tous les exemples de mon livre et tous ceux d'un site internet. Et puis je fais des regex qui me seront utile pour mon espace membre, non - prénom - email - pseudo - mot de passe.
Tiens, en parlant de ça, pour les mots de passe, que faut-il autorisé ?
juste les alphanumérique ? interdire les accents ? les espace ? et les caractères spéciaux ?


Il faut bien donner des limites à l'utilisateur, je ne vais plui donner de l'illimité pour un simple nom de famille. Et puis je pense sincèrement qu'un nom de famille dépasse pas 35 caractères et que si la personne a un nom de famille aussi long, il n'écrirait pas tout.

En tout cas, j'ai essayé de simplifier mon regex et ça donne ceci :
/^[[:alpha:]][[:alpha:][:space:]éèçàù'-]{0,33}[[:alpha:]éèçàù]$/

J'ai rajouté l'espace pour les noms composés.


Edit - [Réponse à Jeje]
J'ai déjà fais pour le pseudo :
/^[[:alpha:]][[:alnum:]_-]{2,8}[[:alnum:]]$/
C'était fastoche Smiley biggrin
Modifié par raffoul (24 May 2007 - 13:06)
raffoul a écrit :
Il faut bien donner des limites à l'utilisateur


Ben en parlant de contextualisation c'est entre autre ça la question.

En plus, c'est quoi que tu limites? L'utilisateur ou ton script ?

La situation pourrait aussi bien être vue comme : pour un script trop limité un utilisateur est lésé.
Modifié par Christian Le Bouler (24 May 2007 - 13:35)
Christian Le Bouler a écrit :


Ben en parlant de contextualisation c'est entre autre ça la question.

En plus, c'est quoi que tu limites? L'utilisateur ou ton script ?

La situation pourrait aussi bien être vue comme : pour un script trop limité un utilisateur est lésé.


Les limites sont : limité qu'à des lettres, lettres avec accents, espace et tirets et 35 caractères, ce n'est pas non plus des limites infranchissables. Tous les utilisateurs qui écrivent leur nom de famille n'auront aucun problème. Mais bon, si on met un champ nom, ce n'est pas pour avoir sa date de naissance inscrite dans ce champ mais pour avoir son vrai nom.
Modifié par raffoul (24 May 2007 - 13:39)
Bon ben on dira que je n'ai pas compris l'intérêt des regex dans le controle des formulaire. Pour moi il ne s'agissait que d'un dispositif d'aide à l'utilisateur sous la forme de gestion des erreurs et rien de plus.
Christian Le Bouler a écrit :
Bon ben on dira que je n'ai pas compris l'intérêt des regex dans le controle des formulaire. Pour moi il ne s'agissait que d'un dispositif d'aide à l'utilisateur sous la forme de gestion des erreurs et rien de plus.


Vous avez raison de dire ce que vous pensez Smiley cligne . En faite, pour moi l'intéret, c'est que la vérification via les regex est plus rapide que par l'enchainement de conditions. Et l'autre intéret est de ne pas avoir trop de faux noms. Comme je l'ai dis précédemment, je ne mettrais pas de champ nom si je ne voulais pas le nom de l'utilisateur et si je veux vraiment le nom, autant commencer par interdire les caractères qu'on ne trouve jamais dans les noms.
Bonjour,

raffoul a écrit :
Et l'autre intéret est de ne pas avoir trop de faux noms.


J'en rajoute une couche Smiley cligne

Si l'utilisateur n'a pas envie de laisser son vrai nom, il ne laissera pas son vrai nom, validation ou pas. En plus les faux seront plus difficiles à repérer.

Pour récupérer des données fiables, la réponse n'est pas technique. Il faut :
1. Que l'utilisateur ait une bonne raison de te laisser ses coordonnées
2. Qu'il ait confiance

Ce n'est pas la validation du nom qui va répondre à ces deux besoins. Pire, tu risques d'interdire des caractères pour des noms parfaitement valides (au hasard, les noms d'origine nordique), mais auxquels tu n'auras pas pensé.
Modifié par Lanza (24 May 2007 - 14:28)
Oui je crois que vous avez raison, je viens de regarder sur hotmail, ils n'interdisent rien dans le nom ou le prénom. Il font juste une limite de caractères. Un pleu plus de 50. Ben je crois que je vais faire ça en faite. Je vais juste vérifier qu'il n'est pas vite et que la longuer est bien inférieur à 60.

On va dire que c'est résolu.