Problème d'accents avec PHP

kenzzzi Messages postés 6 Statut Membre -  
kenzzzi Messages postés 6 Statut Membre -
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

3 réponses

  1. ReDLoG
     
    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
  2. kenzzzi Messages postés 6 Statut Membre
     
    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
    1. ReDLoG
       
      Alors tu es le seul avec qui ça ne fonctionne pas, ce qui me paraît tout de même étrange...
      0
    2. kenzzzi Messages postés 6 Statut Membre
       
      ça n'aide pas beaucoup :/
      0
  3. ReDLoG
     
    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
    1. kenzzzi Messages postés 6 Statut Membre
       
      Ç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