Valider adresse courriel dans formulaire PHP

Résolu
GrifOli Messages postés 2223 Statut Membre -  
GrifOli Messages postés 2223 Statut Membre -
Bonjour,

J'ai créé un formulaire dans lequel la personne doit écrire son adresse courriel. Une fois que la personne appuie sur "Envoyer", le formulaire est envoyé vers une adresse courriel. Mon code initial vérifiait que "quelque chose" avait bien été entré dans la case "Courriel".

Voici ce code:

<?php

if (strlen($_POST['courriel']) > 0)
{ $courriel = TRUE;
}
else
{ $courriel = FALSE; 
}

if ($courriel)
{ $msg = "À ajouter à la liste de distribution des bulletins: {$_POST['courriel']}\n";

  $recipient = "mon@adresse.com";
  $subject = "Courriel pour liste de distribution"; 
  $mailheaders = "Bulletin BMG\n";
  $mailheaders .= "Reply-To: {$_POST['courriel']}\n\n"; 
  
  mail($recipient, $subject, $msg, $mailheaders); 
  
echo "<p><b><font color='#93FF23'>Merci, votre adresse courriel a bien été transmise!</font></b></p>";
}
else
{ echo "<p><b><font color='#93FF23'>Vous avez oublié d'indiquer votre adresse courriel.</font></b></p>";
}

?>


Maintenant, j'aimerais que mon code vérifie si l'adresse courriel est valide avant l'envoie du formulaire. J'ai modifié mon code, mais peu importe ce que la personne écrit, ça envoie quand même le formulaire. Voici mon code modifié:

<?php

if(filter_var($courriel, FILTER_VALIDATE_EMAIL) === TRUE)
{ $courriel = TRUE;
}
else
{ $courriel = FALSE;
}

if ($courriel)
{ $msg = "À ajouter à la liste de distribution des bulletins: {$_POST['courriel']}\n";

  $recipient = "mon@adresse.com";
  $subject = "Courriel pour liste de distribution"; 
  $mailheaders = "Bulletin BMG\n";
  $mailheaders .= "Reply-To: {$_POST['courriel']}\n\n"; 
  
  mail($recipient, $subject, $msg, $mailheaders); 
  
echo "<p><b><font color='#93FF23'>Merci, votre adresse courriel a bien été transmise!</font></b></p>";
}
else
{ echo "<p><b><font color='#93FF23'>Vous devez entrer une adresse courriel valide.</font></b></p>";
}

?>


Je ne voudrais pas que le formulaire s'envoie si l'adresse courriel n'est pas valide... où est l'erreur dans mon code?

Merci!
A voir également:

4 réponses

Jug4tsu Messages postés 56 Statut Membre 13
 
Dans ton filter_var, ce serait pas plutôt le $_POST qui devrait être testé ?
Après ton test, vérifie ce que contient $courriel.

Du genre :
$courriel = filter_var($_POST['courriel'], FILTER_VALIDATE_EMAIL) !== false ? true : false;
var_dump($courriel);
3
GrifOli Messages postés 2223 Statut Membre 591
 
Merci pour ta réponse. J'ai modifié le code et ça fonctionne bien. Cependant, j'ai un petit mot qui s'affiche au-dessus de mon message;

bool(false)

Vous devez entrer une adresse courriel valide.


Comment faire pour ne pas que "bool(false)" s'affiche? Revoici mon code:

<?php

$courriel = filter_var($_POST['courriel'], FILTER_VALIDATE_EMAIL) !== false ? true : false;
var_dump($courriel);

if ($courriel)
{ $msg = "À ajouter à la liste de distribution des bulletins: {$_POST['courriel']}\n";

  $recipient = "mon@adresse.com";
  $subject = "Courriel pour liste de distribution"; 
  $mailheaders = "Bulletin BMG\n";
  $mailheaders .= "Reply-To: {$_POST['courriel']}\n\n"; 
  
  mail($recipient, $subject, $msg, $mailheaders); 
  
echo "<p><b><font color='#93FF23'>Merci, votre adresse courriel a bien été transmise!</font></b></p>";
}
else
{ echo "<p><b><font color='#93FF23'>Vous devez entrer une adresse courriel valide.</font></b></p>";
}

?>
0
Jug4tsu Messages postés 56 Statut Membre 13
 
Var_dump permet d'afficher le type et la valeur d'une variable. C'est pratique quand tu débugges.

Vu que là ça marche, vire le var_dump($courriel); ;)
0
GrifOli Messages postés 2223 Statut Membre 591
 
Merci beaucoup!! :)
0