J'ai enrichi un formulaire de contact (que j'ai déjà utilisé sur d'autres sites) par un autre bout code qui permet de sélectionner le destinataire du message dans un menu déroulant. Le premier formulaire fonctionnait très bien. Le second code fonctionnait très bien également. Mais maintenant que je l'ai réuni, je reçois une erreur : Parse error: parse error in C:\wamp\www\Contacts.php on line 790 La ligne 790 correspond à la dernière ligne de mon code, c'est à dire le </html>. Impossible de trouver où se trouve l'erreur
Pour info, je ne voulais pas utiliser exclusivement le second code (ce qui aurait été bien plus simple) car il ne permettait pas de mémoriser les informations inscrits dans les champs du formulaire en cas d'erreur d'envoi.
Voici le code nettoyé pour garder que l'essentiel (j'ai volontairement supprimé les adresses mail dans le $listeDesMails = array ):
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
// On définit les destinataires possibles
$listeDesMails = array (
'' => '',
'' => '',
'' => '',
'' => '',
'' => '',
'' => '',
'' => '',
);
?>
</head>
<body>
<h1>CONTACTER LA MAIRIE PAR COURRIEL</h1>
<hr><br />
<font><span class="indication">
Merci de sélectionner le destinataire de votre message et de remplir tous les champs du formulaire :</span></font>
<br /><br />
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Merci ! Votre message nous est bien parvenu !<br /> Nous vous répondrons dans les plus brefs délais.";
$message_non_envoye = "L'envoi du mail a échoué. <br />Vous n'avez peut-être pas rempli tous les champs du formulaire. <br />Merci de réessayer en cliquant <a href=\"http://www.marci.fr/contact.php\">ici</a>.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "L'envoi du message a échoué. Vérifiez que tous les champs <br />soient bien remplis et que l'email soit sans erreur.<br /><br />";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
// On vérifit que la personne a bien choisi le destinataire
if($_POST['choixMail'] === 'Tout le monde'){
$to = implode(', ', $listeDesMails);
}elseif($_POST['choixMail'] && IsSet($listeDesMails[$_POST['choixMail']])){
$to = $listeDesMails[$_POST['choixMail']];
}else{
echo '<div style="text-align:center; color:#FF0000;">Veuillez choisir un destinataire ! Merci.<br /><br /></div>',"\r\n";
}
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
// les 4 variables sont remplies,
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// On génère donc puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('’',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' '."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
?>
<form id="contact" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>">
<fieldset>
<label for="choixMail">Destinataire <span class="rouge">*</span> :</label>
<select id="choixMail" name="choixMail">
<option value="0" selected="selected">Choisissez un destinataire...</option>
<option value="Tout le monde">Tout le monde</option>
<?php
foreach($listeDesMails as $prenom => $adresseMail){
echo '<option value="',$prenom,'">',$prenom,'</option>',"\r\n";
}
?>
</select>
<p> <label for="nom">Votre nom <span class="rouge">*</span> : </label> <input type="text" id="nom" name="nom" tabindex="1" value="<?php echo(htmlentities(stripslashes($_POST[nom]))); ?>"/></p><br />
<p> <label for="email">Votre mail <span class="rouge">*</span> : </label> <input type="text" id="email" name="email" tabindex="2" value="<?php echo(htmlentities(stripslashes($_POST[email]))); ?>" /></p><br />
</fieldset>
<fieldset>
<br />
<p> <label for="objet">Objet du message <span class="rouge">*</span> : </label>
<input type="text" id="objet" name="objet" tabindex="3" size="40" value="<?php echo(htmlentities(stripslashes($_POST[objet]))); ?>"/></p><br />
<p> <label for="message">Message <span class="rouge">*</span> : </label>
<textarea id="message" name="message" tabindex="4" cols="70" rows="8"><?php echo(htmlentities(stripslashes($_POST[message]))); ?></textarea>
</p><br />
<p class="contenu">Merci de vérifier que vous avez rempli tous les champs <br />du formulaire.</p>
<br /><br /><br />
</fieldset>
<br /><br />
<div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div>
</form>
</body>
</html>Merci infiniment de votre aide,
gmarcilly