Envoi de mail avec variables - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Envoi de mail avec variables

Par arbilus -  5 reponses -  Le 06/07/2010 -  Flux RSS - 
Bonjours, j'ai un problème d'envoi de mail à partir d'un script: 
 $subject="xxxxxxxxxxx";
$header="from: "echo $a" <$data['email']>";$messages= "xxxxxxxxxxxxxxxx: \r\n";$messages.="xxxxxxxxxxxxxxxx "echo $a" (xxxxxx: "echo $b") \r\n";$messages.="xxxxxxxxxxxxxxxx "echo $c"  xxxxxx "echo $d" xxxx .    \r\n";$messages= "xxxxxxxxxxxxxxxx "$data['e']" "$data['f']" \r\n";$messages= "xxxxxxxxxxxxxxxx: \r\n";$messages= "-xxxxxx: "echo $data['g'] " \r\n";$messages= "-xxxxxx: "echo $data['h'];" \r\n";$messages= "-xxxxxx: "echo $data['i'];" \r\n";$messages= "-xxxxxx: "echo $data['j'];" \r\n";$messages= "xxxxxx "echo $data['k']" \r\n";mail($_POST['email'],$subject,$messages,$header);print ("<script language = \"JavaScript\">"); print ("location.href = 'xxxxxx.html';"); print ("</script>");mysql_close();exit();

 

J'obtiens ceci comme erreur: "Parse error: syntax error, unexpected T_ECHO in /home/arbilus/public_html/cpanel/sentwant2.php on line 236" . 
La ligne 236 équivaut à la deuxième ligne du code: le "from". 
Donc je sais bien que je l'ai mal écris, mais je vois pas comment faire pour l'écrire correctement . 
De plus, je me doute bien qu'il n'y a pas que cette erreur. Donc si vous pourriez m'aider à corriger ce code...
 

Réponses apportées à cette discussion

Par arbilus -  Le 06/07/2010 - 
  1. $subject="xxxxxxxxxxx";
  2. $header="from: "echo $a" <$data['email']>";
  3. $messages= "xxxxxxxxxxxxxxxx: \r\n";
  4. $messages.="xxxxxxxxxxxxxxxx "echo $a" (xxxxxx: "echo $b") \r\n";
  5. $messages.="xxxxxxxxxxxxxxxx "echo $c" xxxxxx "echo $d" xxxx . \r\n";
  6. $messages= "xxxxxxxxxxxxxxxx "$data['e']" "$data['f']" \r\n";
  7. $messages= "xxxxxxxxxxxxxxxx: \r\n";
  8. $messages= "-xxxxxx: "echo $data['g'] " \r\n";
  9. $messages= "-xxxxxx: "echo $data['h'];" \r\n";
  10. $messages= "-xxxxxx: "echo $data['i'];" \r\n";
  11. $messages= "-xxxxxx: "echo $data['j'];" \r\n";
  12. $messages= "xxxxxx "echo $data['k']" \r\n";
  13. mail($_POST['email'],$subject,$messages,$header);
  14. print ("<script language = \"JavaScript\">"); print ("location.href = 'xxxxxx.html';"); print ("</script>");
  15. exit();
    Désolé, le code n'a pas pris en amont.

 

 
Par Cyrano -  Le 07/07/2010 - 

Tss tss tss, Arlibus, comment fait-on une concaténation de chaine en PHP ?

Tu as effectivement une erreur dans la ligne du « from », erreur que tu reproduis ensuite dans les lignes 2, 3 et 4 du « message  »

Dans ton code, il faut distinguer ce qui est PHP de ce qui est valeur traitée. Là, tu affectes des valeurs à des variables. Mais ces mêmes valeurs sont partiellement dynamiques et contiennent elles-même des éléments variables. Il faut donc concaténer des chaines de caractères à des variables pour affecter le tout aux variables $header et $message.

Prenons ta variable $header. La valeur finale doit ressembler à « from: Louis-Artistide Vabo <lavabo@glou.com> » : le nom et l'adresse de courriel sont des valeurs dynamiques variables. Il faut donc construire cette chaîne en concaténant les différentes partie, donc on fait :

Concaténation de chaines et de variables :
  1. $header="from: ". $a ." <". $data['email'] .">";

Je te laisse le soin de corriger les autres ;)

 

 

 
Par arbilus -  Le 07/07/2010 - 

Ok, code final: 

 

  1. $subject="xxxxxxxxxxx";
  2. $header='from:' .$user. '<'.$data['email'].'>';
  3. $messages= "xxxxxxxxxx \r\n";
  4. $messages.="xxxxxxxxxxx ".$user." (xxxxxxxxxxx: ".$xxxxxxxx.") \r\n";
  5. $messages.="xxxxxxxxxxx ".$xxxxxxxxx."xxxxxxxxxxxxxxx xxxxxxxxxxx ".$xxxxxx." xxxxxx . \r\n";
  6. $messages.= "xxxxxxx ".$data['xxxxx']." ".$data['xxx']." \r\n";
  7. $messages.= "xxxxxxxxx \r\n";
  8. $messages.= "xxxxxx ".$data['xxxxxx']." \r\n";
  9. $messages.= "xxxxxx ".$data['xxxxxx']." \r\n";
  10. $messages.= "xxxxxx ".$data['xxxxxx']." \r\n";
  11. $messages.= "-xxxxxx ".$data['xxxxx']." \r\n";
  12. $messages.= "xxxxxxxxxxxxx ".$data['xxxxxxx']." \r\n";
  13. mail("xxxxxx@xxxxxx.xx",$subject,$messages,$header);

 

 

 
Par Cyrano -  Le 07/07/2010 - 

C'est nettement mieux et je parie que tu n'as plus d'erreur.

 Juste un dernier conseil quand même : aère un peu ton code, ça te facilitera la relecture. N'oublie jamais un truc important : aujourd'hui, tu es à l'aise dans ton code et tu t'y retrouves très rapidement, mais dis-toi que si tu passes à autre chose quelques mois et que tu dois y revenir, tu vas râler contre toi-même.

Exemple, c'est mineur mais tu trouveras peut-être que c'est plus clair :

On aère un peu le code
  1. $subject ="xxxxxxxxxxx";
  2. $header ='from:'. $user .'<'. $data['email'] .'>';
  3. $messages = "xxxxxxxxxx \r\n";
  4. $messages .="xxxxxxxxxxx ". $user ." (xxxxxxxxxxx: ". $xxxxxxxx .") \r\n";
  5. $messages .="xxxxxxxxxxx ". $xxxxxxxxx ."xxxxxxxxxxxxxxx xxxxxxxxxxx ". $xxxxxx ." xxxxxx . \r\n";
  6. $messages .= "xxxxxxx ". $data['xxxxx'] ." ". $data['xxx'] ." \r\n";
  7. $messages .= "xxxxxxxxx \r\n";
  8. $messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
  9. $messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
  10. $messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
  11. $messages .= "-xxxxxx ". $data['xxxxx'] ." \r\n";
  12. $messages .= "xxxxxxxxxxxxx ". $data['xxxxxxx'] ." \r\n";
  13. mail("xxxxxx@xxxxxx.xx",$subject,$messages,$header);

:)

 

 

 
Par arbilus -  Le 07/07/2010 - 

Oui, c'est vrai que c'est plus clair . 

 

...Problème réglé ! 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !