Problème caractères accentués formulaire

Résolu/Fermé
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 - 27 nov. 2008 à 18:46
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 - 1 déc. 2008 à 15:00
Bonjour,

J'ai mis en place un formulaire de contact qui fonctionne, mais lorsque je reçois les mails, les caractères accentués et autres genre é è ç ' etc. Sont déformés.

Voici le script. Quelle fonction dois-je insérer et à quel endroit ?

<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'webmasters@scouts-caluire.info';

// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'

// Messages de confirmation du mail
$message_envoye = "Merci !
Votre message a bien été envoyé, nous vous répondrons dans les meilleurs délais. <a href=\"index.html\">Cliquez ici pour continuer</a>.";
$message_non_envoye = "Erreur : l'adresse e-mail semble invalide ! <a href=\"javascript:history.back()\">Cliquez ici pour recommencer</a>.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"javascript:history.back()\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Erreur ! Vérifiez que tous les champs sont bien remplis et que l'email entré est correct.";

/*
********************************************************************************************
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.
$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']) : '';

// 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 = '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 = 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);

// 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="javascript:history.back()">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>

Merci pour vos réponses !
A voir également:

3 réponses

Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
28 nov. 2008 à 14:30
merci, mais cela ne fonctionne toujours pas. merci quand même pour la réponse !
0
Utilisateur anonyme
28 nov. 2008 à 17:35
Bonsoir,
essayons de savoir où cela se produit.
je supose que le message est bien configuré avent l'envoi. (faire un echo avant l'envoi)
et si c'est le cas le problème poourrait venir du serveur de messagerie chez ton FAI, ou alors à l'arrivée du message sur ton logiciel de messagerie (par exemple incredimail mal configuré).
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 déc. 2008 à 15:00
Non, en fait c'est résolu, grâce à ta première solution qui consistait à insérer :

header('Content-Type: text/html; charset=ISO-8859-1');

Merci beaucoup donc !

:)
0
Utilisateur anonyme
27 nov. 2008 à 19:10
bonsoir

essayez de mettre ceci en tout début de script

<?php
header('Content-Type: text/html; charset=ISO-8859-1');
?>
-1