condition sur champs vide

Eléphant du PHP | 297 Messages

09 juil. 2007, 14:38

Bonjour,
j'ai mis en place un petit filtre sur une fonction mail()
Sur mon formulaire j'ai un champ mail (visible) et message (invisible)

Code : Tout sélectionner

<input name="email" type="text" id="email" size="12"> <textarea name="message" type="text" id="message" style="display:none"
la validation du formulaire renvoie sur une page ou j'ai une condition pour l'envoie du mail.
champ email rempli et champ message vide...ce qui donne
      if(($HTTP_POST_VARS['mail'] != FALSE) && ($HTTP_POST_VARS['message'] == ""))
         {
         mail($email,$sujet,$msg,$Headers);
         }
      else
         {
         echo "Erreur";
         }
mais lorsque j'execute en fournissant un email, j'ai le message erreur :(

est-ce que qlq sait ou ça plante ? voir meme comment améliorer ce code ?

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juil. 2007, 14:45

Bonjour,
  • tout d'abord, ton input pour l'adresse email se nomme "email", et tu essayes de récupérer $HTTP_POST_VARS['mail']
  • Ensuite, s'il rien n'est saisi, $HTTP_POST_VARS['mail'] contient une chaine vide et non pas FALSE.
    $HTTP_POST_VARS['mail'] != FALSE
    devient donc
    $HTTP_POST_VARS['mail'] != ''
  • De plus, la syntaxe $HTTP_POST_VARS est dépreciée, préfère utiliser $_POST
Ton code de vérification corrigé est donc le suivant :
if ( ($_POST['email'] != '') && ($_POST['message'] == "") )
{
	mail($email,$sujet,$msg,$Headers);
}
else
{
	echo "Erreur";
}
EDIT --
Je viens de voir que tu utilise la variable $email dans la fonction mail().
tu peut donc réécrire ton if de cette manière
if ( ($email != '') && ($_POST['message'] == "") )
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juil. 2007, 14:47

dans ton formulaire, le premier champ a pour nom "email" tandis que tu testes la valeur de $HTTP_POST_VARS['mail'] ;)

Ps : tu peux utiliser $_POST au lieu de $HTTP_POST_VARS :)

Edit : dammit !! non seulement i have been grilled, mais en plus il a eu le temps d'éditer son message avant que je ne poste le mien le rascal !! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juil. 2007, 14:49

Edit : dammit !! non seulement i have been grilled, mais en plus il a eu le temps d'éditer son message avant que je ne poste le mien le rascal !! ;)
:langue: Le talent mon cher, le talent :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juil. 2007, 15:07

Ouais ben faut bien ça, parce que côté modestie.... ;) :langue:

Edit - Avertissement : le pourrissement de ce topic est réalisé par des modérateurs professionnels et le public n'est pas encouragé à faire de même ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 297 Messages

09 juil. 2007, 15:07

merci à vous deux,
j'ai rectifié mon code (à force de tourner le code pour trouver une soluce je m'étais planté sur le champ (e)mail, mais il ne fonctionnait pas sans cet erreur).
J'espère que cela vient du False.
J'attends de voir si efficace contre spams avant de mettre résolu...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juil. 2007, 15:09

Disons que le problème que tu nous as soumis est résolu, non ?

Je pense qu'il faudrait que tu marques ce sujet résolu, quitte à en ouvrir un autre en faisant un lien vers celui-ci si tu continue à avoir du spam ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 297 Messages

09 juil. 2007, 15:11

ok

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juil. 2007, 15:12

Merci :pouce: :D
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer