Envoi de mail avec variables
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
$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();Désolé, le code n'a pas pris en amont.
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 * » : 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 :
$header="from: ". $a ." <". $data['email'] .">";
Je te laisse le soin de corriger les autres ;)
Ok, code final:
$subject="xxxxxxxxxxx";$header='from:' .$user. '<'.$data['email'].'>';$messages= "xxxxxxxxxx \r\n";$messages.="xxxxxxxxxxx ".$user." (xxxxxxxxxxx: ".$xxxxxxxx.") \r\n";$messages.="xxxxxxxxxxx ".$xxxxxxxxx."xxxxxxxxxxxxxxx xxxxxxxxxxx ".$xxxxxx." xxxxxx . \r\n";$messages.= "xxxxxxx ".$data['xxxxx']." ".$data['xxx']." \r\n";$messages.= "xxxxxxxxx \r\n";$messages.= "xxxxxx ".$data['xxxxxx']." \r\n";$messages.= "xxxxxx ".$data['xxxxxx']." \r\n";$messages.= "xxxxxx ".$data['xxxxxx']." \r\n";$messages.= "-xxxxxx ".$data['xxxxx']." \r\n";$messages.= "xxxxxxxxxxxxx ".$data['xxxxxxx']." \r\n";mail("xxxxxx@xxxxxx.xx",$subject,$messages,$header);
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 :
$subject ="xxxxxxxxxxx";
$header ='from:'. $user .'<'. $data['email'] .'>';
$messages = "xxxxxxxxxx \r\n";
$messages .="xxxxxxxxxxx ". $user ." (xxxxxxxxxxx: ". $xxxxxxxx .") \r\n";
$messages .="xxxxxxxxxxx ". $xxxxxxxxx ."xxxxxxxxxxxxxxx xxxxxxxxxxx ". $xxxxxx ." xxxxxx . \r\n";
$messages .= "xxxxxxx ". $data['xxxxx'] ." ". $data['xxx'] ." \r\n";
$messages .= "xxxxxxxxx \r\n";
$messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
$messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
$messages .= "xxxxxx ". $data['xxxxxx'] ." \r\n";
$messages .= "-xxxxxx ". $data['xxxxx'] ." \r\n";
$messages .= "xxxxxxxxxxxxx ". $data['xxxxxxx'] ." \r\n";
mail("xxxxxx@xxxxxx.xx",$subject,$messages,$header);
:)
Oui, c'est vrai que c'est plus clair .
...Problème réglé !