Vous n'êtes pas identifié(e).
salut a tous
je programme une page de recommandation de site, rien de bien méchant enfin si^^
j'ai aucune erreur lors de l'envoi, par contre je reçois rien du tout !
include("inc/conf.php");
include("inc/fonctions.php");
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$email1 = postInput($_POST["email1"]);
$email2 = postInput($_POST["email2"]);
$email3 = postInput($_POST["email3"]);
$email4 = postInput($_POST["email4"]);
$email5 = postInput($_POST["email5"]);
$email6 = postInput($_POST["email6"]);
$message = postInput($_POST["message"]);
if (!EmailOK($email1))
{
$_GET["msg"] = "email1 est invalide";
}
else
{
if (!EmailOK($email2))
{
$_GET["msg"] = "email2 est invalide";
}
else
{
if (!EmailOK($email3))
{
$_GET["msg"] = "email3 est invalide";
}
else
{
if (!EmailOK($email4))
{
$_GET["msg"] = "email4 est invalide";
}
else
{
if (!EmailOK($email5))
{
$_GET["msg"] = "email5 est invalide";
}
else
{
if (!EmailOK($email6))
{
$_GET["msg"] = "email6 est invalide";
}
else
{
if (empty($_GET["msg"]))
{
@mail($email1,$email2,$email3,$email4,$email5,$email6,"[NomSite] Invitation","Bonjour,
[url]http://www.NomSite.fr/membres/inscription.php[/url]
$message
Cordialement
-----
Ceci est un message automatique
Merci de ne pas répondre","From: ".$config["noreply"]);
header("location: inviter.php?msg=OK");
exit();
}
}
}
}
}
}
}
}
else
{
$email1 = "";
$email2 = "";
$email3 = "";
$email4 = "";
$email5 = "";
$email6 = "";
$message = "";
}
include("inc/header.php");
?>
Je pense que c'est un probleme dû a la ligne :
@mail($email1,$email2,$email3,$email4,$email5,$email6,"[NomSite] Invitation","Bonjour,
? merci pour votre aide.
Dernière modification par david7 (31-01-2010 12:27:18)
Hors ligne
oui, voici les erreurs :
Warning: mail() expects at most 5 parameters, 9 given in /public_html/inviter.php on line 63
Warning: Cannot modify header information - headers already sent by (output started at /public_html/inviter.php:63) in /public_html/inviter.php on line 65
la ligne 63 : Merci de ne pas répondre","From: ".$config["noreply"]);
j'utilise la meme chose sur mes autres pages, aucun probleme !
Hors ligne
merci, j'ai lu la documentation par contre je trouve pas la solution a mon probleme ! je pense que c'est la ligne 54 qui pose probleme avec les email1,2,3 etc...
mais alors comment faire pour envoyer à plusieurs personnes (dans mon cas 6).
Hors ligne
En utilisant la fonction mail correctement. ^^
Elle ne supporte qu'un seul champ destinataire, donc il faut l'utiliser plusieurs fois :
ou alors en plus propre :
Pour le problème avec header cela vient du fait que la fonction mail modifie le header de la page.
Dernière modification par xTG (31-01-2010 19:14:52)
Hors ligne
ca marche nikel^^ merci
j'ai utilisé ta technique "propre" c'est mieu
Hors ligne
salut,
ou alors plus simple on utilise le champ BCC de la fonction mail pour envoyer tous ça en une seule fois (voir donc la fonction mail).
utiliser la fonction mail en boucle risque d'être mal vu par ton hébergeur
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
oops, j'ai parlé trop vite ! ca marche seulement si je rempli tout les champs emails (les 6!) si j'en rempli un seul ca envoi aucun mail. pourquoi?
Hors ligne
voici ma page :
include("inc/conf.php");
include("inc/fonctions.php");
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$email1 = postInput($_POST["email1"]);
$email2 = postInput($_POST["email2"]);
$email3 = postInput($_POST["email3"]);
$email4 = postInput($_POST["email4"]);
$email5 = postInput($_POST["email5"]);
$email6 = postInput($_POST["email6"]);
$message = postInput($_POST["message"]);
if ($email1 != "")
{
if (!EmailOK($email1))
{
$_GET["msg"] = "email1 est invalide";
}
}
if ($email2 != "")
{
if (!EmailOK($email2))
{
$_GET["msg"] = "email2 est invalide";
}
}
if ($email3 != "")
{
if (!EmailOK($email3))
{
$_GET["msg"] = "email3 est invalide";
}
}
if ($email4 != "")
{
if (!EmailOK($email4))
{
$_GET["msg"] = "email4 est invalide";
}
}
if ($email5 != "")
{
if (!EmailOK($email5))
{
$_GET["msg"] = "email5 est invalide";
}
}
if ($email6 != "")
{
if (!EmailOK($email6))
{
$_GET["msg"] = "email6 est invalide";
}
}
if (empty($_GET["msg"]))
{
$email = $email1.','.$email2.','.$email3.','.$email4.','.$email5.','.$email6;
mail($email,"[NomSite] Invitation","Bonjour,
[url]http://www.NomSite.fr/membres/inscription.php[/url]
$message
Cordialement, NomSite
-----
Ceci est un message automatique
Merci de ne pas répondre","From: ".$config["noreply"]);
header("location: inviter.php?msg=OK");
exit();
}
}
else
{
$email1 = "";
$email2 = "";
$email3 = "";
$email4 = "";
$email5 = "";
$email6 = "";
$message = "";
}
include("inc/header.php");
?>
Hors ligne
donc si j'ai bien conpris je retire la ligne 58, 59, 74 ??
c'est pas plutot la ligne 60 ? car a la base c'est prévu pour 6 mails, donc s'il y en a moin : bug ! non ?
Dernière modification par david7 (01-02-2010 10:25:03)
Hors ligne
euh non!! c'est pas possible la ligne 58 ! car une fois que je clic sur valider le message "OK" s'affiche donc c'est pas un probleme de : if (empty($_GET["msg"]))
Hors ligne
Hors ligne
oui dsl je réexplique :
la, si je rempli les 6 champs email d'ami1, email d'ami2 etc jusqu'a 6 dans mon formulaire tout marche bien le message OK s'affiche ! aucun probleme !
mais si je rempli pas les 6 champs (par exemple si j'en rempli un seul), le message OK s'affiche mais mes amis reçoivtn aucun mail... rien du tout
donc le probleme c'est qu'il faut remplir les 6 champs donc tapé 6 emails d'amis pour que sa fonctionne pourquoi ?
Hors ligne
Je ne peux rien te dire dessus étant donné que je ne sais pas ce que renvoie ta fonction postInput.
Renvoie-t-elle véritablement une chaîne de caractère vide ? Essayes d'utiliser la fonction trim() pour supprimer les possibles caractères blanc.
Il faut aussi faire de l'ajout conditionnel pour le champs email de la fonction. Car là on ajoute des virgules et seulement des virgules si certains mails sont vide.
Hors ligne
merci pour ton aide
donc je test ton code comme ceci :
//$email = $email1.','.$email2.','.$email3.','.$email4.','.$email5.','.$email6;
mail($email,"[NomSite] Invitation","Bonjour,
sinon pour info voici ma fonction :
c'est pas un probleme avec ma fonction je pense.
je vais voir avec ton code tout de suite..
Hors ligne
cela ne fonctionne pas
Hors ligne
Remplace toujours les != "" par la fonction !empty() cela ferra déjà bien plus propre.
Ensuite un petit test pour voir si la variable est effectivement vide ou non : tu rajoutes un caractère devant et un derrière.
Et tu l'affiches.
Hors ligne
merci pour le conseil avec le !empty() je vais voir..
sinon pour le script avec les 6 champs etc.. j'abandonne je comprend de moin en moin j'y arrive pas. (mais merci pour ton coup de main c'est cool de ta part)
je vais faire un textarea a la place, le visiteur tapera les emails de ces amis avec des virgules lui meme... c'est plus simple ! t'en pense quoi ?
Hors ligne
oui en effet euh.. je te montre ma page entierement pour que tu m'explique comment faire (ou me fasse exceptionnellement mais je réve biensur^^) la voici :
include("../inc/conf.php");
include("../inc/fonctions.php");
include("verif.php");
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$email1 = postInput($_POST["email1"]);
$email2 = postInput($_POST["email2"]);
$email3 = postInput($_POST["email3"]);
$email4 = postInput($_POST["email4"]);
$email5 = postInput($_POST["email5"]);
$email6 = postInput($_POST["email6"]);
$message = postInput($_POST["message"]);
if ($email1 != "")
{
if (!EmailOK($email1))
{
$_GET["msg"] = "email1 est invalide";
}
}
if ($email2 != "")
{
if (!EmailOK($email2))
{
$_GET["msg"] = "email2 est invalide";
}
}
if ($email3 != "")
{
if (!EmailOK($email3))
{
$_GET["msg"] = "email3 est invalide";
}
}
if ($email4 != "")
{
if (!EmailOK($email4))
{
$_GET["msg"] = "email4 est invalide";
}
}
if ($email5 != "")
{
if (!EmailOK($email5))
{
$_GET["msg"] = "email5 est invalide";
}
}
if ($email6 != "")
{
if (!EmailOK($email6))
{
$_GET["msg"] = "email6 est invalide";
}
}
if (empty($_GET["msg"]))
{
$message = addslashes($message);
$dateheure = date("Y-m-d H:i:s");
$email = "";
if (!empty($email1)) $email .= ','.$email1;
if (!empty($email2)) $email .= ','.$email2;
if (!empty($email3)) $email .= ','.$email3;
if (!empty($email4)) $email .= ','.$email4;
if (!empty($email5)) $email .= ','.$email5;
if (!empty($email6)) $email .= ','.$email6;
//$email = $email1.','.$email2.','.$email3.','.$email4.','.$email5.','.$email6;
mail($email,"[NomSite] Invitation","Bonjour,
[url]http://www.nomsite.fr/membres/inscription.php[/url]
$message
Cordialement, NomSite
-----
Ceci est un message automatique
Merci de ne pas répondre","From: ".$config["noreply"]);
header("location: inviter.php?msg=OK");
exit();
}
}
else
{
$email1 = "";
$email2 = "";
$email3 = "";
$email4 = "";
$email5 = "";
$email6 = "";
$message = "";
}
include("../inc/header.php");
?>
<h1>Parrainez ici vos amis !</h1>
<?php
if (!empty($_GET["msg"]))
{
$msg = str_replace("+"," ",$_GET["msg"]);
$msg = stripslashes($msg);
echo("$msg<br /><br />");
}
?>
<form action="inviter.php" method="post">
<input type="hidden" name="action" value="send" />
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="2">Emails de vos amis :<br />(Vous pouvez recommander 6 amis maximum).</td>
</tr>
<tr>
<td>1.<input type="text" name="email1" size="30" value="<?php echo($email1); ?>" maxlength="155" /></td>
<td>2.<input type="text" name="email2" size="30" value="<?php echo($email2); ?>" maxlength="155" /></td>
</tr>
<tr>
<td>3.<input type="text" name="email3" size="30" value="<?php echo($email3); ?>" maxlength="155" /></td>
<td>4.<input type="text" name="email4" size="30" value="<?php echo($email4); ?>" maxlength="155" /></td>
</tr>
<tr>
<td>5.<input type="text" name="email5" size="30" value="<?php echo($email5); ?>" maxlength="155" /></td>
<td>6.<input type="text" name="email6" size="30" value="<?php echo($email6); ?>" maxlength="155" /></td>
</tr>
<tr>
<td colspan="2">Message personnalisé (optionnel) :</td>
</tr>
<tr>
<td colspan="2"><textarea name="message" cols="40" rows="5"><?php echo($message); ?></textarea></td>
</tr>
</table>
<br />
<input type="submit" value="Valider" />
</form>
<?php
include("../inc/footer.php");
?>
Dernière modification par david7 (02-02-2010 09:09:55)
Hors ligne
Bah tes tests sont bon, ça il n'y a pas à y retoucher. A la rigueur pour gagner de la place et des itérations tu peux faire ainsi :
Sinon fais le test de debug que je t'ai proposé. Actuellement je suis presque certain que tes variables ne sont pas vides.
Et initialises moi $_GET['msg'] à vide.
Hors ligne
Remplace toujours les != "" par la fonction !empty() cela ferra déjà bien plus propre.
Ensuite un petit test pour voir si la variable est effectivement vide ou non : tu rajoutes un caractère devant et un derrière.
Et tu l'affiches.$maVar = 'a'.$maVar.'b';
celui ci ? mais.. explique moi pourquoi (je dormirais avec plus de connaissance ce soir^^) car pour moi si le visiteur rempli un champ email c'est pas vide !
a mon avis le probleme c'est que le script rajoute toujours une virgule MEME s'il y a pas les 6 emails de rempli par le visiteur.
sinon j'ai modifié la page comme ceci :
include("../inc/conf.php");
include("../inc/fonctions.php");
include("verif.php");
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
$email1 = postInput($_POST["email1"]);
$email2 = postInput($_POST["email2"]);
$email3 = postInput($_POST["email3"]);
$email4 = postInput($_POST["email4"]);
$email5 = postInput($_POST["email5"]);
$email6 = postInput($_POST["email6"]);
$message = postTextarea($_POST["message"]);
if (!empty($email1) && !EmailOK($email1))
{
$_GET["msg"] = "email1 est invalide";
}
if (!empty($email2) && !EmailOK($email2))
{
$_GET["msg"] = "email2 est invalide";
}
if (!empty($email3) && !EmailOK($email3))
{
$_GET["msg"] = "email3 est invalide";
}
if (!empty($email4) && !EmailOK($email4))
{
$_GET["msg"] = "email4 est invalide";
}
if (!empty($email5) && !EmailOK($email5))
{
$_GET["msg"] = "email5 est invalide";
}
if (!empty($email6) && !EmailOK($email6))
{
$_GET["msg"] = "email6 est invalide";
}
if (empty($_GET["msg"]))
{
$message = addslashes($message);
$dateheure = date("Y-m-d H:i:s");
$email = "";
if (!empty($email1)) $email .= ','.$email1;
if (!empty($email2)) $email .= ','.$email2;
if (!empty($email3)) $email .= ','.$email3;
if (!empty($email4)) $email .= ','.$email4;
if (!empty($email5)) $email .= ','.$email5;
if (!empty($email6)) $email .= ','.$email6;
mail($email,"[NomSite] Invitation","Bonjour,
[url]http://www.nomsite.fr/membres/inscription.php[/url]
$message
Cordialement, NomSite
-----
Ceci est un message automatique
Merci de ne pas répondre","From: ".$config["noreply"]);
header("location: inviter.php?msg=OK");
exit();
}
}
else
{
$email1 = "";
$email2 = "";
$email3 = "";
$email4 = "";
$email5 = "";
$email6 = "";
$message = "";
}
include("../inc/header.php");
?>
<h1>Parrainez ici vos amis !</h1>
<?php
if (!empty($_GET["msg"]))
{
$msg = str_replace("+"," ",$_GET["msg"]);
$msg = stripslashes($msg);
echo("$msg<br /><br />");
}
?>
<form action="inviter.php" method="post">
<input type="hidden" name="action" value="send" />
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="2">Emails de vos amis :<br />(Vous pouvez recommander 6 amis maximum).</td>
</tr>
<tr>
<td>1.<input type="text" name="email1" size="30" value="<?php echo($email1); ?>" maxlength="155" /></td>
<td>2.<input type="text" name="email2" size="30" value="<?php echo($email2); ?>" maxlength="155" /></td>
</tr>
<tr>
<td>3.<input type="text" name="email3" size="30" value="<?php echo($email3); ?>" maxlength="155" /></td>
<td>4.<input type="text" name="email4" size="30" value="<?php echo($email4); ?>" maxlength="155" /></td>
</tr>
<tr>
<td>5.<input type="text" name="email5" size="30" value="<?php echo($email5); ?>" maxlength="155" /></td>
<td>6.<input type="text" name="email6" size="30" value="<?php echo($email6); ?>" maxlength="155" /></td>
</tr>
<tr>
<td colspan="2">Message personnalisé (optionnel) :</td>
</tr>
<tr>
<td colspan="2"><textarea name="message" cols="40" rows="5"><?php echo($message); ?></textarea></td>
</tr>
</table>
<br />
<input type="submit" value="Valider" />
</form>
<?php
include("../inc/footer.php");
?>
c'est déjà mieu avec ta methode pour les vérif en haut..
Hors ligne
Enlèves la virgule que tu ajoutes devant $email1. ^^
celui ci ? mais.. explique moi pourquoi (je dormirais avec plus de connaissance ce soir^^) car pour moi si le visiteur rempli un champ email c'est pas vide !
Bien sûr mais ton soucis survient lorsque l'utilisateur ne remplit pas un champs. Donc je soupçonne le champ qui n'a pas été remplie d'être remplie quelque part dans ton script.
Sinon rajoutes l'initialisation de la variable $_GET['msg'].
Et pourquoi utiliser une variable _GET pour ces messages d'erreurs ?
Une variable locale aurait suffit pour ton code.
Hors ligne