Problème d'accents avec PHP

Fermé
kenzzzi Messages postés 6 Date d'inscription vendredi 16 mars 2012 Statut Membre Dernière intervention 16 mars 2012 - Modifié par kenzzzi le 16/03/2012 à 17:10
kenzzzi Messages postés 6 Date d'inscription vendredi 16 mars 2012 Statut Membre Dernière intervention 16 mars 2012 - 16 mars 2012 à 22:43
Bonjour,

J'ai un souci avec un script de récupération mail en PHP! Après envoi, les lettres accentuées dans la partie $message sont transformées. Je sais que c'est un problème d'encodage. Quelqu'un peut m'aider svp !

Voici le script :

<?php

define("WEBMASTER_EMAIL", 'moi@host.com');

error_reporting (E_ALL ^ E_NOTICE);

function ValidateEmail($email)
{
$regex = '/([a-z0-9_.-]+)'.
'@'.
'([a-z0-9.-]+){2,255}'.
'.'.
'([a-z]+){2,10}/i';

if($email == '')
return false;
else
$eregi = preg_replace($regex, '', $email);
return empty($eregi) ? true : false;
}

$post = (!empty($_POST)) ? true : false;

if($post)
{
$name = stripslashes($_POST['name']);
$email = trim($_POST['email']);
$subject = stripslashes($_POST['subject']);
$message = stripslashes($_POST['message']);

$error = '';

if(!$name || $name == "Name*")
$error .= 'Veuillez indiquer votre nom.<br />';

if(!$email || $email == "Email*")
$error .= 'Veuillez indiquer votre adresse email.<br />';

if($email && !ValidateEmail($email))
$error .= 'Adresse email invalide.<br />';

if(!$message)
$error .= "Veuillez entrer un message avant de poster.<br />";

if(!$error)
{
$mail = mail(WEBMASTER_EMAIL, $subject, $message,
"From: ".$name." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."X-Mailer: PHP/" . phpversion());

if($mail)
echo 'OK';
}
else
echo '<div class="formstatuserror">'.$error.'</div>';
}

?>

Merci d'avance
A voir également:

3 réponses

Rajoute dans le header du mail le jeu de caractères à utiliser (CHARSET ISO-8859-1), plusieurs exemples disponibles sur le net, je te laisse un peu bosser, comme ça tu auras toute la gloire d'avoir résolu ton problème par toi-même ;-)
0
kenzzzi Messages postés 6 Date d'inscription vendredi 16 mars 2012 Statut Membre Dernière intervention 16 mars 2012
Modifié par kenzzzi le 16/03/2012 à 17:16
J'ai essayé avec tout type d'en-tête, ça ne marche pas ?! J'ai même essayé avec la fonction filter... mais nada !!! Merci quand même ;)
0
Alors tu es le seul avec qui ça ne fonctionne pas, ce qui me paraît tout de même étrange...
0
kenzzzi Messages postés 6 Date d'inscription vendredi 16 mars 2012 Statut Membre Dernière intervention 16 mars 2012
16 mars 2012 à 20:27
ça n'aide pas beaucoup :/
0
J'ai légèrement modifié ton code :
<?php 
if(!$error) {
	$headers = "From: ".$name." <".$email.">\r\n";
	$headers .= "Reply-To: ".$email."\r\n";
	$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
	$headers .= "X-Mailer: PHP/".phpversion());

	if(mail(WEBMASTER_EMAIL, $subject, $message, $headers)) {
		echo ' Message envoyé avec succès!';
	} else {
		echo "Un problème est survenu lors de l'envoi de votre message!";
	}
} else {
	echo '<div class="formstatuserror">'.$error.'</div>';
}
?>
0
kenzzzi Messages postés 6 Date d'inscription vendredi 16 mars 2012 Statut Membre Dernière intervention 16 mars 2012
16 mars 2012 à 22:43
Ça ne marche pas non plus ReDLoG! Je reçois un message de Parse error: syntax error, unexpected... Au fait, 'OK' transmet sur ma page HTML :

<script type="text/javascript">

$(document).ready(function(){
$("#contact-form").submit(function(){
var str = $(this).serialize();
$.ajax({
type: "POST",
url: "contact.php",
data: str,
success: function(msg)
{
$("#formstatus").ajaxComplete(function(event, request, settings){
if(msg == 'OK'){
result = '<div class="formstatusok">Votre message a bien été envoyé.</div>';
$("#fields").hide();
}
else{
result = msg;
}
$(this).html(result);
});
}

});
return false;
});
});

</script>


Faudrait insérer le Content-type dans la partie qui suit, mais je ne sais pas comment l'écrire! J'ai essayé aisni, mais ça ne marche pas :

$mail = mail(WEBMASTER_EMAIL, $subject, $message,
"From: ".$name." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."Content-type: text/html; charset=iso-8859-1' . \r\n"
."X-Mailer: PHP/" . phpversion());

Les accents paraissent dans le $subject, c'est dans $message que ça coince. En tout cas, je te remercie beaucoup de ton intervention
0