Bonjour à tous
je viens sur ce forum pour demander une aide , j'ai un script en php qui me permet de récupérer des variables dans un formulaire en HTML, et ce script et envoyé par mail.
Tous fonctionne correctement , sauf que lorsque je reçois un formulaire et qu'il y a un accent et bien dans le corps de mon message chaque accent est remplacé par î
Et voici le script :
<?php
header('content-type: text/html; charset: utf-8');
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'contact@monmail.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'
// Messages de confirmation du mail
$message_envoye = "<center>Votre demande de devis nous est bien parvenue, nous nous engageons à vous transmettre votre étude personnalisée sous 48 heures Cliquez <a href=\"index.html\">ici</a> pour retourner sur le site .</center>";
$message_non_envoye = "L'envoi du devis a échoué, veuillez réessayer SVP.";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"devis.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* 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;
};
// formulaire envoyé, on récupère tous les champs.
$offre = (isset($_POST['offre'])) ? Rec($_POST['offre']) : '';
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$birth = (isset($_POST['birth'])) ? Rec($_POST['birth']) : '';
$situation = (isset($_POST['situation'])) ? Rec($_POST['situation']) : '';
$regime = (isset($_POST['regime'])) ? Rec($_POST['regime']) : '';
$birth2 = (isset($_POST['birth2'])) ? Rec($_POST['birth2']) : '';
$regime2 = (isset($_POST['regime2'])) ? Rec($_POST['regime2']) : '';
$enfant = (isset($_POST['enfant'])) ? Rec($_POST['enfant']) : '';
$adresse1 = (isset($_POST['adresse1'])) ? Rec($_POST['adresse1']) : '';
$adresse2 = (isset($_POST['adresse2'])) ? Rec($_POST['adresse2']) : '';
$cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$mut = (isset($_POST['mut'])) ? Rec($_POST['mut']) : '';
$effet = (isset($_POST['effet'])) ? Rec($_POST['effet']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = "Calculer mon devis";
$bes0 = (isset($_POST['bes'][0]));
$bes1 = (isset($_POST['bes'][1]));
$bes2 = (isset($_POST['bes'][2]));
$bes3 = (isset($_POST['bes'][3]));
$bes4 = (isset($_POST['bes'][4]));
$bes5 = (isset($_POST['bes'][5]));
$bes6 = (isset($_POST['bes'][6]));
$bes7 = (isset($_POST['bes'][7]));
$message = "
L'offre que je choisis : $offre
Mon nom est : $nom
Mon prénom est : $prenom
Ma date de naissance est : $birth
Mon adresse est : $adresse1 $adresse2
Mon code postal : $cp
Ma ville : $ville
Je suis : $situation
Nombre enfant : $enfant
Mon régime : $regime
Mon téléphone : $telephone
Mon email : $email
Avez vous déjà une mutuelle ? : $mut
La date de souscription souhaitée : $effet
Mes besoins : $bes[0] , $bes[1] ,$bes[2] ,$bes[3] ,$bes[4] ,$bes[5] ,$bes[6] ,$bes[7] .
La date de naissance de mon conjoint : $birth2
Régime de mon conjoint : $regime2 ";
// 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é
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'Content-type: text/html; charset=UTF-8';
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
$message = str_replace("à","à",$message);
$message = str_replace("è","è",$message);
$message = str_replace("é","é",$message);
$message = str_replace("ê","ê",$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.' <a href="devis.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>
Merci à tous