Aller au contenu

Sujets conseillés

Posté

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 ?

Posté

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...

Posté

Ah, merci, ça marche impeccable :)

Bon ben finalement j'étais pas loin, mais je sais pas si j'aurais pas perdu énormément de temps à tâtonner tout seul : merci beaucou, donc :)

Posté (modifié)

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
Posté

Juste un petit mot pour dire que les fonctions preg_* sont beaucoup plus rapides à exécuter que les fonctions ereg_* ;)

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
Posté (modifié)

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

Veuillez vous connecter pour commenter

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



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