• le formulaire se trouve dans une page contact.html
• il est vérifié et validé par une surcouche jquery
• et est traité par un script php situé sur une page traitement.php
Tout fonctionne à merveille, j'ai juste deux choses à régler :
1 - problème d'encodage sur la page traitement.php (je pense), car lorsque je reçois les mails, les lettres accentuées DANS LE CORPS DU MAIL UNIQUEMENT sont remplacées (exemple : "é" se transforme en "é" et "à" devient "Ã")
2 - j'aimerais que le message de confirmation d'envoi apparaisse juste au dessus du formulaire et non sur la page traitement.php qui est chargée.
Je pense que c'est tout bête à régler, mais je ne maîtrise pas le PHP, du coup, je bidouille...
Pour gagner du temps, je vous glisse mes codes :
LE FORMULAIRE SUR LA PAGE CONTACT.HTML
<form id="formulaire" method="post" action="traitement.php" >
<p class="error"></p>
<h2>Nom complet et/ou société</h2>
<input class="form-text" required="true" type="text" name="nom" id="nom" value=""/>
<h2>Adresse e-mail</h2>
<input class="form-text" type="text" mask="email" required="true" name="email" id="email" value=""/>
<h2>Téléphone</h2>
<input class="form-text" mask="phone" required="true" type="text" name="telephone" id="tel" value=""/>
<h2>Message</h2>
<textarea class="form-textarea" rows="8" cols="40" required="true" name="message" id="message"></textarea><br/>
<button class="form-bouton" type="submit">Envoyer</button>
</form>
MA PAGE TRAITEMENT.PHP
<?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','[email protected]');
define('MAIL_SUJET','Nouveau message');
// vérification des champs
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre e-Mail<br/>";
if (empty($_POST['telephone']))
$message .= "Votre téléphone<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; die();
}
// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
//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=utf-8\r\n';
$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 : $nom\n";
$mail_corps .= "e-Mail : $email\n";
$mail_corps .= "Téléphone : $telephone\n";
$mail_corps .= "Message : $message\n";
// 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";
}
?>
Pourriez-vous m'aider à résoudre mes deux petits soucis ?MERCI