Problème formulaire de contact PHP
Résolu
nob51
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
Mihawk Messages postés 4753 Statut Contributeur -
Mihawk Messages postés 4753 Statut Contributeur -
Bonjour,
Je m'explique, j'ai un soucis avec mon formulaire de contact : lorsque l'on rentre une adresse au format adresse@domaine.tld celui ne marche pas, il faut que l'adresse de messagerie soit au format adresse.adresse@domaine.tld
Je ne sais pas d'où ça peut venir, j'ai regardé mes expressions régulières mais elles ont l'air correctes.
Le code :
Merci d'avance,
nob51
Je m'explique, j'ai un soucis avec mon formulaire de contact : lorsque l'on rentre une adresse au format adresse@domaine.tld celui ne marche pas, il faut que l'adresse de messagerie soit au format adresse.adresse@domaine.tld
Je ne sais pas d'où ça peut venir, j'ai regardé mes expressions régulières mais elles ont l'air correctes.
Le code :
elseif (!eregi("^([a-zA-Z0-9]+)([_\.-]+)([a-zA-Z0-9]+){1,}@([a-zA-Z0-9]+).([a-zA-Z]+){2,4}$",$_POST["son_mail"]))
{ // On vérifie si l'email est bien de la forme messagerie@domaine.tld
$erreur="Votre adresse e-mail n'est pas valide...";
}
Merci d'avance,
nob51
5 réponses
-
Si tu utilise PHP >= 5.2.0, tu peux utiliser la fonction filter_var() :
filter_var($email, FILTER_VALIDATE_EMAIL)
-
Hello,
Peux-tu reformuler le problème : il faut que ce soit adresse.adresse@... ou au contraire tu veux que ça accepte nimportequoi@.... ??
Et as-tu marqué volontairement deux fois "adresse" ou bien cela peut-il être nimportequoi1.nimportequoi2@... ?
Parce que en effet, vu ta regexp tu as besoin de deux parties séparées par ., - ou _.
-
Alors pas besoin de séparer, une classe [a-zA-Z0-9.-_] suffit largement. Après tout une adresse peut contenir plusieurs points !
"^([a-zA-Z0-9_\.-]+)@([a-zA-Z0-9]+).([a-zA-Z]+){2,4}$"
Pour info, tu oublies surement des cas d'adresse... Je te conseille de regarder le tutoriel PHP du site du zéro, dans lequel une regexp d'email est créée et elle est très efficace !
-
Et bien je voudrais que l'on puisse mettre les deux types d'adresses, séparées ou non comme nimportequoi1.nimportequoi2@... ou nimportequoi1@
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Désolé du double post mais j'ai trouvé!
Il fallait supprimer le regexp qui comme tu me l'avais fait remarquer, demandait de séparer les partie par un point ou - ou underscore.
La solution :elseif (!eregi("^([a-zA-Z0-9.]+)([a-zA-Z0-9]+){1,}@([a-zA-Z0-9]+).([a-zA-Z]+){2,4}$",$_POST["son_mail"])) { // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières) $erreur="Votre adresse e-mail n'est pas valide...";
Merci pour votre aide!
nob51-
-
-
Bon ce coup ci c'est bon!!
J'ai utilisé la seconde classe pour faire office de séparateur avec les _ et -. La bonne solution :elseif (!eregi("^([a-zA-Z0-9.]+)([-_a-zA-Z0-9]+){1,}@([a-zA-Z0-9]+).([a-zA-Z]+){2,4}$",$_POST["son_mail"])) { // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières) $erreur="Votre adresse e-mail n'est pas valide..."; -
Je persiste à dire que c'est pas propre comme solution...
Deux classes quasiment identique mises l'un à la suite de l'autre (avec des + en plus) peuvent largement être regrouper.
De plus, quel intérêt de préciser {1,} à la fin alors que c'est exactement le rôle du + ?!!
^([a-zA-Z0-9.]+)([-_a-zA-Z0-9]+){1,} = ^[a-zA-Z0-9.-_]+
-