IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire mail php : caractères accentués remplacés


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 68
    Points : 34
    Points
    34
    Par défaut Formulaire mail php : caractères accentués remplacés
    Bonjour à tous,

    J'ai créé un formulaire mail php qui fonctionne.
    Le problème c'est la réception des messages du formulaire dans ma messagerie (Foxmail) : les accents ne sont pas conservés :

    >>> Exemple d'un message reçu :
    Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.
    - Son nom : Allandé
    - Son prenom : André
    - Son telephone :
    - Son adresse : 4 allée des Pyrénées
    - Sa prestation : paophoto
    - Objet du message : Devis
    - Message : Merci de m'avoir envoyé les tarifs

    Comment puis-je régler ce problème ?

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    <?php
    if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
        $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
     
        // On récupère les champs du formulaire, et on arrange leur mise en forme
        if (isset($_POST["son_nom"])) $_POST["son_nom"]=trim(stripslashes
    ($_POST["son_nom"])); // trim()  enlève les espaces en début et fin de chaine
     
        if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes
    ($_POST["son_email"])); // stripslashes()  retire les backslashes ==> \' devient '
     
        if (isset($_POST["son_adresse"])) $_POST["son_adresse"]=trim(stripslashes(
    $_POST["son_adresse"]));
     
        if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes
    ($_POST["son_objet"]));
     
        if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes
    ($_POST["son_message"]));
     
        // Après la mise en forme, on vérifie la validité des champs
        if (empty($_POST["son_nom"])) { // L'utilisateur n'a pas rempli le champ nom
            $erreur="Vous n'avez pas entr&eacute; votre nom..."; // On met dans erreur le message qui sera affiché
    		}
            elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
                $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
    		}
            elseif (preg_replace("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ 
    		// On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
                $erreur="Votre adresse e-mail n'est pas valide...";
            }
    		elseif (empty($_POST["choix"])) { // L'utilisateur n'a pas rempli le champ choix
            $erreur="Merci de sélectionner une prestation..."; // On met dans erreur le message qui sera affiché
    		}
            elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
                $erreur="Vous devez entrer l'objet de votre message...";
            }
            elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
                $erreur="Merci de saisir un message...";
            }
            else { // Si tous les champs sont valides, on change l'état à ok
                $etat="ok";
            }
    }
    else { // Sinon le formulaire n'a pas été soumis
        $etat="attente"; // On passe donc dans l'état attente
    }
     
    if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
        if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
            echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; 
    // On affiche le message correspondant à l'erreur
        }
    ?>
     
          <!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
     
          <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
            <!-- Les données du formulaire seront récupérée avec la méthode POST,
     et action correspond à la page contenant le formulaire -->
            <table id=tab-form-contact>
              <tr>
                <th class=ch-oblig colspan="3">* Champs obligatoires</th>
              </tr>
              <tr>
                <th><label for="son_nom">Nom *</label></th>
                <td >&nbsp;</td>
                <td><!-- Intitulé du champ nom -->
     
                  <input type="text" size="30" name="son_nom" id="son_nom" value="<?php
            if (!empty($_POST["son_nom"])) {
            // le nom de l'expéditeur a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_nom"],ENT_QUOTES); 
    // htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
            }
            ?>" /></td>
              </tr>
              <tr>
                <th><label for="son_prenom">Prénom&nbsp;&nbsp;</label></th>
                <td>&nbsp;</td>
                <td><!-- Intitulé du champ nom -->
     
                  <input type="text" size="30" name="son_prenom" id="son_prenom" value="<?php
            if (!empty($_POST["son_prenom"])) {
            // le nom de l'expéditeur a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_prenom"],ENT_QUOTES); 
    // htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
            }
            ?>" /></td>
              </tr>
              <tr>
                <th><label for="son_email">Courriel *</label></th>
                <td>&nbsp;</td>
                <td><!-- Intitulé du champ e-mail -->
     
                  <input type="text" size="40" name="son_email" id="son_email" value="<?php
            if (!empty($_POST["son_email"])) {
            // l'e-mail de l'expéditeur a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
            }
            ?>" /></td>
              </tr>
              <tr>
                <th><label for="son_tel">Téléphone&nbsp;&nbsp;</label></th>
                <td>&nbsp;</td>
                <td><input name="son_tel" type="text" id="son_tel" value="<?php
            if (!empty($_POST["son_tel"])) {
            // le telephone de l'expéditeur a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_tel"],ENT_QUOTES); 
    // htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
            }
            ?>" size="30" maxlength="10" />
                  &nbsp;Sans point et sans espace</td>
              </tr>
              <tr>
                <th><label for="son_adresse">Adresse&nbsp;</label></th>
                <td>&nbsp;</td>
                <td><!-- Intitulé du champ adresse (facultatif) -->
     
                  <input type="text" size="40" name="son_adresse" id="son_adresse" value="<?php
            if (!empty($_POST["son_adresse"])) {
            // l'adresse a été saisi --> la réafficher
            echo htmlspecialchars($_POST["son_adresse"],ENT_QUOTES);
            }
            ?>" /></td>
              </tr>
              <tr>
                <th><label for="choix">Prestations *</label></th>
                <td>&nbsp;</td>
                <td><table width="310">
                    <tr>
                      <td><label>
                          <input type="radio" name="choix" value="pao" id="choix_0" <?php if ( $_POST['choix'] == 'pao' ) echo 'checked'; ?> />
                          PAO</label></td>
                    </tr>
                    <tr>
                      <td><label>
                          <input type="radio" name="choix" value="photo" id="choix_1" <?php if ( $_POST['choix'] == 'photo' ) echo 'checked'; ?> />
                          Photo</label></td>
                    </tr>
                    <tr>
                      <td><label>
                          <input type="radio" name="choix" value="paophoto" id="choix_2" <?php if ( $_POST['choix'] == 'paophoto' ) echo 'checked'; ?> />
                          PAO + Photo</label>
                          </td>
                          <td>Sélectionnez une prestation</td>
                    </tr>
                  </table>
     
                  </td>
              </tr>
              <tr>
                <th><label for="son_objet">Objet *</label>
                </th>
                <td>&nbsp;</td>
                <td><!-- Intitulé du champ objet -->
     
                  <input type="text" size="40" name="son_objet" id="son_objet" value="<?php
            if (!empty($_POST["son_objet"])) {
            // l'objet du message a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
            }
            ?>" /></td>
              </tr>
              <tr>
                <th><label for="son_message">Message *</label></th>
                <td>&nbsp;</td>
                <td><!-- Intitulé du champ message -->
     
                  <textarea name="son_message" id="son_message" cols="50" rows="3"><?php
            if (isset($_POST["son_message"])) {
            // le message a été saisi --> le réafficher
            echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
            }
            ?>
    </textarea></td>
              </tr>
              <tr>
                <td class=td-foot colspan="3"><input type="submit" name="envoyer" value="Envoyer" />
                  &nbsp;&nbsp;
                  <input type="reset" 
    name="reset" value="Effacer" /></td>
              </tr>
            </table>
            <p style="text-align:left"> <br />
          </form>
          <!-- FIN du formulaire HTML -->
     
          <?php

  2. #2
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    Bonjour

    De mémoire, il doit s'agir d'un probleme d'encodage dans le header de ta fonction mail, que tu n'as hélas pas intégrée dans ton message précédent.

    Cherches peut-être dans la direction d'un encodage UTF-8 à spécifier dans ton header de message email. Il y a très certainement déjà un thread dans le forum, car ce type de sujet est souvent rencontré.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut
    Tu dois rajouter ceci dans ton header pour l'envoi du mail :

    $From .= "Content-type: text/html; charset= iso-8859-1\n";

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    entre les balises head tu as le choix entre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    je ne sais plus lequel est le bon mais si ce n'est pas le premier il y a des chances que ce soit l'autre

Discussions similaires

  1. Caractères accentués remplacés par des '?' sur page JSP (Mysql 5)
    Par nicolaseng dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/03/2011, 19h50
  2. [PHP 4] Formulaire mail php : bouton radio se décoche
    Par adameteve dans le forum Langage
    Réponses: 6
    Dernier message: 26/10/2010, 00h01
  3. Caractères accentués remplacés par des '?' sur page JSP
    Par nicolaseng dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/02/2008, 16h03
  4. [AJAX] Caractères accentués remplacés
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/07/2007, 13h20
  5. Formulaire mail et caractères accentués
    Par Yael dans le forum Langage
    Réponses: 13
    Dernier message: 30/03/2006, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo