PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-05-2009 19:30:52

quaresma
Membre
Inscription : 10-05-2009
Messages : 42

Caractères spéciaux et formulaire

Bonjour à tous,
j'ai fait un formulaire de contact sur mon site internet, mais le problème c'est que les caractères speciaux lorsque je fait des tests d'envoi dans ma boîte mail s'affichent mal.

Par exemple, si j'envoi le message suivant:

Bonjour,
je souhaiterai être contacté à l'email suivant:
contact <contact@contact.fr>

merci beaucoup
john

Lorsque je recoit le message dans ma boite de reception d'email, il s'affiche comme cela:

Bonjour,<br />
je souhaiterai être contacté à l'email suivant:<br />
contact <contact@contact.fr><br />
<br />
merci beaucoup<br />
john

Voici le code de traitement du formulaire:

<?php
  /*
    ********************************************************************************************
    CONFIGURATION
    ********************************************************************************************
  */

  // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
  $destinataire = 'XXXXXXX@free.fr';

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

  // Messages de confirmation du mail
  $message_envoye = "Votre message nous est bien parvenu ! Vous allez recevoir une copie de votre message dans votre boîte mail.";
  $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

  // Messages d'erreur du formulaire
  $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\">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.
   
    $monsieur = (isset($_POST['monsieur']))   ? Rec($_POST['monsieur'])   : '';
    $madame = (isset($_POST['madame'])) ? Rec($_POST['madame']) : '';
    $moiselle = (isset($_POST['moiselle'])) ? Rec($_POST['moiselle']) : '';
    $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
        $telephone = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
    $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
    $societe = (isset($_POST['societe'])) ? Rec($_POST['societe']) : '';


    // 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 != '') && ($message != '') && ($telephone != '') && ($ville != '') && ($societe != ''))
    {
      // les 4 variables sont remplies, on génère puis envoie le mail
      $headers = 'De: '.$nom.' <'.$email.'>' . "\r\n" . 'Téléphone: '.$telephone.'' . "\r\n" . 'Société: '.$societe.'' . "\r\n" . 'Message: '.$message.'' . "\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, $message, $headers))
      {
        echo '<p>'.$message_envoye.'   <a href="http://www.XXXXXXXXXXXXXX.fr/contact.php">Cliquez-ici pour revenir au formulaire</a></p>'."\n";
      }
      else
      {
        echo '
<p>'.$message_non_envoye.'  <a href="http://www.XXXXXXXXXXXXXXX.fr">Retour au formulaire</a></p>'."\n";
      };
    }
    else
    {
      // une des 3 variables (ou plus) est vide ...
      echo '
<p>'.$message_formulaire_invalide.' <a href="http://www.XXXXXXXXX.fr/contact.php">Retour au formulaire</a></p>'."\n";
    };
  }; // fin du if (!isset($_POST['
envoi']))
?>

Pourriez-vous m'aider s'il vous plait ?
Merci beaucoup.

Hors ligne

#2 11-05-2009 07:44:29

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Caractères spéciaux et formulaire

Saluton,
Puisque qu'apparemment le texte est en html (< > sont des entités html) il manque, dans ton header, qqe chose du genre :

Content-Type: text/html; charset="iso-8859-1"

Un petit tuto pas trop prise de tête :
http://phpcodeur.net/articles/php/emails


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums