Verification de validité du format email dans un formulaire [Résolu]

Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
- - Dernière réponse : carbonaro09
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
- 7 mars 2011 à 20:28
Bonjour a tous

Je viens d'essayer d'implémenter un petit morceau de code pour vérifier la validité des adresses mail remplies dans mon formulaire de contact!

Malheureusement, Quelque soit l'adresse, valide ou non, l'email est envoyé et le contrôle ne semble pas être fait!

Avez vous une idée de la raison ?

Voici le mail présent dans mon formulaire (contact.php):

<form action= "envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">

 Send us a message 


Your name:


Your email adress:


Object:


Message:<textarea id ="textarea_size" name= "message" cols="50" rows="10"></textarea>


<?php
require_once('recaptchalib.php');
$publickey = "..."; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
echo recaptcha_get_html($publickey); // Affiche le captcha?>




</form>


Le code permettant de traiter ce formulaire est dans envoie.php :

<?php require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
$privatekey  = "..."; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
$resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) { // Test si le captcha a bien été rempli
echo 'Captcha incorrect';} // Si le captcha n'est pas valide
else{
// Si le captcha est valide

/* Cette fonction sert à vérifier la syntaxe d'un email */
function VerifierAdresseMail($mail) 
{   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
   if(preg_match($Syntaxe,$mail)) 
      return true; 
   else 
     return false; }
   
$nom=$HTTP_POST_VARS['nom']; 
$mail=$HTTP_POST_VARS['mail']; 
$objet=$HTTP_POST_VARS['objet']; 
$message=$HTTP_POST_VARS['message']; 

// On va vérifier les variables et l'email ...
$mail=htmlentities($_POST['adresse']); 
if(VerifierAdresseMail($mail)) 
echo 'Votre adresse est valide.

'; 
else 
echo 'Votre adresse e-mail n\'est pas valide.

';
  
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 

$subject="$objet"; 
$destinataire="contact@contact.com"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Thank you, your message has been sent
";
} else { 
echo "Sorry, your message has not be sent to a technical issue"; 
} ?>


Merci de bien vouloir m'aider!

Carbonaro
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Dernière intervention
6 mai 2011
3
Merci
Bonjour,
Il faut faiire l'envoi de l'email seulement si l'email est correcte

if(VerifierAdresseMail($mail))
{ 
  echo 'Votre adresse est valide.

'; 
  /////voici la version Mine 
  $headers = "MIME-Version: 1.0\r\n"; 
  //////ici on détermine le mail en format text 
  $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
  ////ici on détermine l'expediteur et l'adresse de réponse 
  $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 

  $subject="$objet"; 
  $destinataire="contact@contact.com"; 
  $body="$message"; 
  if (mail($destinataire,$subject,$body,$headers)) { 
   echo "Thank you, your message has been sent
";
  }
 else { 
  echo "Sorry, your message has not be sent to a technical issue"; 
  }
}
else 
{
  echo 'Votre adresse e-mail n\'est pas valide.

';
}

Merci cs_ludwig59 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_ludwig59
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Dernière intervention
23 mars 2012
0
Merci
lut,

Si tu ne sais pas le faire en regex, tu peux toujours utiliser un filtre (DOC PHP) avec le filtre de validation d'email (DOC PHP)

______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Salut,

Merci pour ta réponse!

Je pense que mon erreur ne doit pas être très grande! Je persiste et aimerai comprendre la raison pour laquelle cela ne fonctionne pas!

Une idée ?

Merci,
Commenter la réponse de carbonaro09
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
0
Merci
bonjour

ton code fonctionne
<?php
$error="";
// require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
/*$privatekey = "..."; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
$resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);  */



/*LA J AI PAS TOUT TON CODE OK JE BLEUFF LE CONTROLE*/
if (1==0) { // Test si le captcha a bien été rempli
echo 'Captcha incorrect';} // Si le captcha n'est pas valide
else{
// Si le captcha est valide

/* Cette fonction sert à vérifier la syntaxe d'un email */
function VerifierAdresseMail($mail) 
{   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
   if(preg_match($Syntaxe,$mail)) 
      return true; 
   else 
     return false; }

/*ma propos*/

if(isset($_POST['nom']) && !empty($_POST['nom'])){
$nom=$_POST['nom'];$error=NULL;}
else{
echo $error='Non vide - [javascript:history.back(); Retour au formulaire]';exit;
} 

if(isset($_POST['mail']) && !empty($_POST['mail'])){
$mail=$_POST['mail'];$error=NULL;
}else{
echo $error='Mail vide - [javascript:history.back(); Retour au formulaire]';exit;
}

if(isset($_POST['objet']) && !empty($_POST['objet'])){
$objet=$_POST['objet'];$error=NULL;
}else{
echo $error='Objet vide - [javascript:history.back(); Retour au formulaire]';exit;
}

if(isset($_POST['message']) && !empty($_POST['message'])){
$message=$_POST['message'];$error=NULL;
}else{
echo $error='Message vide - [javascript:history.back(); Retour au formulaire]';exit;
} 


// On va vérifier les variables et l'email ...
$mail=htmlentities($mail); /*TU AVEZ UNE ERREUR ICI*/
if(VerifierAdresseMail($mail)) 

/*fin propo*/

echo 'Votre adresse est valide.

'; 
else 
echo 'Votre adresse e-mail n\'est pas valide.

';
  
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 

$subject="$objet"; 
$destinataire="contact@contact.com"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Thank you, your message has been sent
";
} else { 
echo "Sorry, your message has not be sent to a technical issue"; 
} 

}
?>


deux trucs
$HTTP_POST_VARS ON UTILISE $_POST

PUIS TU as mis 'adresse' et pas 'mail' dans ta var POST



A++
Commenter la réponse de cod57
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Bonjour Code57,

Merci d'avoir pris le temps de regarder tout ca! Et merci pour les modifications apportées

Cela ne semble toujours pas fonctionner.

La validité de l'adresse mail est vérifiée MAIS même lorsque celle ci est incorrecte, malgré le message "Votre adresse e-mail n'est pas valide." le mail est envoyé!

Il doit y avoir un probleme vers la fin du code!

Une idée ?

Merci par avance
Carbonaro
Commenter la réponse de carbonaro09
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
0
Merci
bonsoir

j'ai testé ton code sur mon serveur avec mes corrections il fonctionne
bien sans bugs ... mais comme j'ai pas tout tes fichiers et je vois pas
tout ... tu comprends

ton besoin du départ était le contrôle du mail !

j'ai fait une source ce dimanche car ce genre de problème est souvent
posté sur le forum

http://www.phpcs.com/codes/FORMULAIRE-VERS-COURRIEL-BASIQUE-AVEC-CONTROLE-CAPTCHA-ANTI_52898.aspx

tu peux la charger, elle reprend en gros l'idée de ton code et d'autres
webmasters

a++
Commenter la réponse de cod57
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Bonsoir,

C'est surprenant!

En fait dans mon code, lorsque l'email est non valide, on a

echo 'Votre adresse e-mail n\'est pas valide.

';


En revanche il n'y a rien pour arrêter la suite du code:

/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 

$subject="$objet"; 
$destinataire="contact@contact.com"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Thank you, your message has been sent
";
} else { 
echo "Sorry, your message has not be sent to a technical issue"; 
} 

}
?>


Il n'y a dans ma compréhension rien qui stop l'envoi du mail!

Qu'en penses tu ?

J'essaie de comprendre!
Merci par avance!
Commenter la réponse de carbonaro09
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
0
Merci
question triviale
$destinataire="contact@contact.com";
as tu mis ton mail ici et pas contact@contact.com

je vois pas ! mais as tu essayé ma source, elle marche bien

http://www.phpcs.com/codes/FORMULAIRE-VERS-COURRIEL-BASIQUE-AVEC-CONTROLE-CAPTCHA-ANTI_52898.aspx

essaie de l'adapter ou suivre sa logique
- on verifie d'abord les $_POST
- on filtre
- verfifie le captcha $_POST['code'] === $_SESSION ['verif']
- on traite, envoi
- affiche le message raté / reussi
Commenter la réponse de cod57
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Salut,

C'est étrange! Oui, j'ai bien mis mon adresse!

Je ne comprends pas pourquoi ce code ne fonctionne pas avec moi!

Oui, je vais essayer d'adapter le nouveau code, mais je voulais éviter de le faire, car le code que j'ai posté correspond déjà à un code adapté!

Merci,
Commenter la réponse de carbonaro09
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Bonjour,

Super, merci, je vais essayer ça....

Bonne journée
Commenter la réponse de carbonaro09
Messages postés
7
Date d'inscription
dimanche 1 mars 2009
Dernière intervention
7 mars 2011
0
Merci
Salut Ludwig,

Voila ce que je cherchais! C'est tout simplement génial. Merci

C'est presque de l'art

Merci a cod57. Je vais pouvoir agrémenter mon code maintenant qu'il fonctionne!

A bientot pour de nouvelles aventures!
Commenter la réponse de carbonaro09

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.