Problème code php dans formulaire

Clément Thiery -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je code mon site internet mais je n'ai pas fait de php en cours. Sauf que ici, je vais en avoir besoin pour l'envoi de formulaire. En fait, j'aimerais recevoir un mail avec les informations du formulaire. Voici mon code

<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','***@***'); // remplacer par votre email
define('MAIL_SUJET','Message du formulaire de example.com');

// vérification des champs
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre email<br/>";
if (empty($_POST['message']))
$message .= "Votre message<br/>";

// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
 echo $message;
 }

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = stripslashes(trim($valeur));
}

$interets = $_POST['interets'];
$sqlinterets = '';
for ($i=0; $i<count($interets); $i++)
{
  $sqlinterets .= $interets[$i];
  $sqlinterets .= ', ';
}

//Préparation de l'entête du mail:
$mail_entete  = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} ";
             ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps  = "Message de : $civilite $nom\n";
$mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps .= "Ses centres d'intérêts : $sqlinterets\n\n\n";
$mail_corps .= $comments;

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
echo $msg_ok;
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}

?>


On m'annonce une erreur au niveau de la ligne 52 --> echo $msg_ok;

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

On m'annonce une erreur

Pourrions-nous avoir le message Exact et complet de l'erreur ?
1
Clément Thiery
 
Parse error: syntax error, unexpected 'Â Â ' (T_STRING) in /home/u187567625/public_html/traitement.php on line 52
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux ajouter, avant l'envoie de mail, un peu de debug pour voir ce que contiennent tes variables :
	// le temps des tests :
	echo "<br>header : ".$mail_entete;
	echo "<br>mail_corps : ".$mail_corps;
	echo "<br> MAIL_DESTINATAIRE : ".MAIL_DESTINATAIRE;
	echo "<br> MAIL_SUJET : ".MAIL_SUJET;

Histoire de vérifier si il n'y aurait pas des caractères spéciaux ou autre ...


Et sinon , au cas où, peux tu tester avec ce code :
<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','***@***'); // remplacer par votre email
define('MAIL_SUJET','Message du formulaire de example.com');

// vérification des champs
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre email<br/>";
if (empty($_POST['message']))
$message .= "Votre message<br/>";

$nom = !empty($_POST['nom'])?$_POST['nom']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';


// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
 echo $message;
 }

// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = stripslashes(trim($valeur));
}

$interets = isset($_POST['interets'])?$_POST['interets']:array();
$sqlinterets = '';
for ($i=0; $i<count($interets); $i++){
  $sqlinterets .= $interets[$i];
  $sqlinterets .= ', ';
}

  // Creation de l'entete du mail a envoyer
  // --------------------------------------
  $boundary = md5(uniqid(microtime(), TRUE));
  $mail_entete =  "From: ".$nom." <".$email.">\r\n";
  $mail_entete .= 'Reply-To: '.$email."\r\n";
  $mail_entete .= 'Mime-Version: 1.0'."\r\n";
  $mail_entete .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
  $mail_entete .= "\r\n";
 
  // Creation du message a envoyer
  // -----------------------------
  // préparation du corps du mail
  $mail_corps  ='--' . $boundary . "\r\n" . 'Content-type: text/html; charset=ISO-8859-1' . "\r\n\r\n";
  $mail_corps .= "Message de : $civilite $nom\n";
  $mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n";
  $mail_corps .= "Ses centres d'intérêts : $sqlinterets\n\n\n";
  $mail_corps .= $comments;
  

	// le temps des tests :
	echo "<br>header : ".$mail_entete;
	echo "<br>mail_corps : ".$mail_corps;
	echo "<br> MAIL_DESTINATAIRE : ".MAIL_DESTINATAIRE;
	echo "<br> MAIL_SUJET : ".MAIL_SUJET;
	
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
    //Le mail est bien expédié
    echo $msg_ok;
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}



 }

?>

0
Clément Thiery
 
Parse error: syntax error, unexpected '}' in /home/u187567625/public_html/traitement.php on line 73

Est-ce du à la parenthèse qui est toute seule à ce niveau là ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
oui pardon.. tu peux supprimer cette ligne.
0