Aller au contenu

Tester un champ de formulaire


FrenchKiss

Sujets conseillés

Hello

Je suis en train de mettre en place un formulaire de contact, et je voudrais être sûr qu'il soit sécurisé à mort.

Valider une adresse e-mail, easy, on trouve des regexp partout.

Par contre, j'aimerais valider le nom de l'expéditeur, et là ça se corse : je voudrais vérifier que le nom n'est composé que de chiffres, de lettres (accentuées ou pas) et éventuellement des caractères " " (espace), ".", "-" et "_" ...

Quelqu'un peut-il me dire à quoi doit ressembler le regexp correspondant ? Pour l'instant j'ai voulu faire

ereg("^([0-9a-zA-Z][:space][:punct:]_.-)*$",$nom)

mais ça ne valide jamais.

D'autre part, comment m'assurer que le corps du message soit sans risque ? Je dois vérifier quoi ? L'absence de balises html (je fais un strip_tags, ça suffit ?) et quoi d'autre ?

Lien vers le commentaire
Partager sur d’autres sites

Je suis pas un pro des Regex, mais je pense que ça ne fonctionne pas parce que telle que tu l'as écrite, il faut que $nom soit composé d'une suite comme suit : un élément de [0-9a-zA-Z] suivi de l'élément de type string suivant " ._.-" et cela autant de fois que nécessaire...

Je pense que tu devrais essayer :

ereg("^[0-9a-zA-Z _.-]*$",$nom)

C'est sans garantie mais ça coute rien d'essayer...

Lien vers le commentaire
Partager sur d’autres sites

Ca me fait plaisir...T'es la première personne que j'aide sur ce forum!!! :fete:

Après plus d'une quarantaine de question, je fourni enfin une réponse!!!Quel soulagement... :lol:

Sinon, vu que la sécurité a l'air d'être une de tes principales angoisses (moi, j'ai la même...). Je pense qu'avec ce code, y a pas trop moyen de te balancer un truc dangereux...(parce que sans < > = " et ' je sais pas comment c'est possible!!!)

Un lien pour "dominer" les Regex : LeSiteDuZero

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Ok, merci pour ces conseils.

Je remonte le topic, parce que je continue de me heurter aux expressions régulières : je voudrais maintenant valider un numéro de portable.

Pour ce faire je dois

- vérifier que le premier couple de 2 chiffres est un 06

- vérifier la présence (éventuelle) d'un séparateur de type "." ou " " ou "-"

- vérifier que j'ai 4 itérations de ([0-9]{2})([ .-]{1})* (donc, deux chiffres suivis de 0 ou 1 séparateur)

J'ai fait ça :

preg("^06([ \.-]{0,1})(([0-9]{2})([ \.-]{0,1}){4})$",$tel)

mais ça ne valide même pas 0611223344 :(

Des idées pour me débloquer ?

///// edit : j'ai fini par trouver :

preg_match("!^06([-. ]{1,3}?[0-9]{2}){4}$!",$tel) valide très bien les numéros de portable. :)

Modifié par FrenchKiss
Lien vers le commentaire
Partager sur d’autres sites

La synthaxe des expressions régulières est différente selon la méthode utilisée ;)

Pour ton problème, cela donnerait à peu près:

if (preg_match("!^06((-{1})?(.{1})?[0-9]{2}){4}$!", $tel))
{
 // numéro de portable reconnu
}
else
{
 // pas de correspondance
}

  • 0601020304
  • 06-01-02-03-04
  • 06.01.02.03.04
  • 06010203
  • 06-01-02-03
  • 06.01.02.03
  • ab-cd-ef-gh-ij

Mais je ne suis pas un pro des expressions régulières (loin de là :P ) et mon expression laisse certainement passer d'autres trucs :unsure:

edit: grillé :lol:

Modifié par MS-DOS_1991
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...