Problème code php dans formulaire
Clément Thiery
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 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
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.
.
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
-
Bonjour,
On m'annonce une erreur
Pourrions-nous avoir le message Exact et complet de l'erreur ?
-
Parse error: syntax error, unexpected 'Â Â ' (T_STRING) in /home/u187567625/public_html/traitement.php on line 52
-
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"; } } ?>
-
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à ?