Page 1 sur 1

Condition if pour un envoi par email

Posté : 20 déc. 2011, 17:38
par colo
Hello :)

Je cherche à faire une condition pour un envoi d'email sur l'email justement.
Sachant que globalement, j'ai 10 adresses que je dois filtrer et que toutes les autres partent à une autre destination.

Voici mon code

Code : Tout sélectionner

if ($email == '[email protected]' OR '[email protected]' OR '[email protected]' OR '[email protected]') { mail("[email protected]","Titre1",$entete."<br>".$contenu."<br>".$pied, $headers); } else{ mail("[email protected]","Titre2",$entete."<br>".$contenu."<br>".$pied, $headers); }
je n'ai pas d'erreur de syntaxe à première vue mais ma condition ne fonctionne pas.
Avez-vous une idée ? Merci pour vos remarques.

Colo

Re: Condition if pour un envoi par email

Posté : 20 déc. 2011, 17:51
par Calimero
En php, OR est un opérateur logique (ce qui signifie qu'il ne sait travailler qu'avec deux types de valeurs, true ou false - les conversions nécessaires sont faites automatiquement).

Une chaîne de caractère non-vide s'évaluant toujours à true, ce if() :
if ($email == '[email protected]' OR '[email protected]' OR '[email protected]' OR '[email protected]') {
Equivaut pour php à :
if( $email == '[email protected]' OR true OR true OR true )
Le résultat étant donc toujours vrai.

Il ne faut donc pas faire l'économie des opérateurs == comme tu l'as fait, ce sont eux qui donnent du sens à chaque condition (qui sont ensuite calculées via les OR). C'est syntaxiquement correct, mais la signification est fausse :)

Correction :
if ($email == '[email protected]' OR $email == '[email protected]' OR $email == '[email protected]' OR $email == '[email protected]') {

Re: Condition if pour un envoi par email

Posté : 21 déc. 2011, 11:33
par colo
Bonjour,

Merci pour ton aide Calimero :)

Du coup, j'obtiens le code suivant :

Code : Tout sélectionner

if ($email == '[email protected]' OR $email == '[email protected]' OR $email == '[email protected]') { mail("[email protected]","titre",$entete."<br>".$contenu."<br>".$pied, $headers); } else{ mail("[email protected]","titre 2 ".$user_email."",$entete."<br>".$contenu."<br>".$pied, $headers); }
Mais la condition ne fonctionne pas, le mail est toujours envoyé à [email protected] m^me si $email est l'un des emails de la condition.
Avez-vous une idée de ce qui pourrais géner ?

Merci d'avance pour votre aide :)

Colo

Re: Condition if pour un envoi par email

Posté : 21 déc. 2011, 11:40
par Mazarini
Ajoutes un echo "/",$email,"/<br>" avant le if. A priori $email ne contient pas ce que tu penses.
En particulier, il peut y avoir un blanc au début ou à la fin ce que les "/" montreront.

Re: Condition if pour un envoi par email

Posté : 21 déc. 2011, 12:44
par colo
Effectivement, il n'y avait rien entre les // via echo.
J'ai donc re-regarder pour me rendre comtpe que j'avais confondu vendor_email et user_email.... :oops:

Avec mes excuses donc pour le dérangement !

Merci beaucoup pour votre aide et vos explications :)

++

Colo

Re: Condition if pour un envoi par email

Posté : 21 déc. 2011, 23:50
par Aureusms
Je te conseillerai de tester via une variable tableau
$tabEmailAutorise = array( '[email protected]','[email protected]','[email protected]');
if (in_array(trim($email),$tabEmailAutorise)) {
mail("[email protected]","titre",$entete."<br>".$contenu."<br>".$pied, $headers);
}
else{
mail("[email protected]","titre 2 ".$user_email."",$entete."<br>".$contenu."<br>".$pied, $headers);
}
Cela te permet de mettre autant d'email a tester que tu veux et de les tester en une seule condition

Re: Condition if pour un envoi par email

Posté : 22 déc. 2011, 10:19
par colo
effectivement, le nombre de mails va augmenter prochainement donc ce sera mieux :D

enocre merci !! =D>