Problème formulaire de contact PHP
Résolu
nob51
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
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
A voir également:
- Problème formulaire de contact PHP
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Formulaire de contact le bon coin introuvable ✓ - Forum Vos droits sur internet
5 réponses
Si tu utilise PHP >= 5.2.0, tu peux utiliser la fonction filter_var() :
filter_var($email, FILTER_VALIDATE_EMAIL)
nob51
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
5
Effectivement j'utilise PHP5. Je dois donc remplacer l'expression régulière par le filtre?
Mihawk
Messages postés
4315
Date d'inscription
Statut
Contributeur
Dernière intervention
846
Tu peux, pas tu dois :-)
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 _.
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 !
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 !
"^([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 :
Merci pour votre aide!
nob51
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 :
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 + ?!!
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.-_]+