Valider adresse courriel dans formulaire PHP

Résolu/Fermé
GrifOli
Messages postés
2105
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
26 mars 2020
- Modifié par crapoulou le 13/07/2016 à 07:50
GrifOli
Messages postés
2105
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
26 mars 2020
- 25 mars 2011 à 17:00
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!

4 réponses

Jug4tsu
Messages postés
56
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
1 septembre 2011
13
Modifié par crapoulou le 13/07/2016 à 07:50
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
2105
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
26 mars 2020
593
Modifié par crapoulou le 13/07/2016 à 07:51
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
Date d'inscription
lundi 13 septembre 2010
Statut
Membre
Dernière intervention
1 septembre 2011
13
25 mars 2011 à 16:57
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
2105
Date d'inscription
samedi 28 juin 2008
Statut
Membre
Dernière intervention
26 mars 2020
593
25 mars 2011 à 17:00
Merci beaucoup!! :)
0