Problème avec les caractères accentués

Développement, conception de sites web, PHP, (X)HTML, ASP, Ajax, CSS, Javascript, Flash, MySQL, et autres ont leurs entrées dans cette section. On peut aussi parler d'hébergement, de maintenance, de sécurité...

Modérateur: Modérateurs

Problème avec les caractères accentués

Messagepar phil » 12 Aoû 2008 09:49

Bonjour,

Sur le petit site d'une amicale, j'ai un formulaire de contact.
Ce formulaire est envoyé vers un fichier php pour contrôle des champs. Ensuite il parvient dans ma boîte mail.
Tout ce passe bien sauf avec les caractères accentués qui sont illisibles.

En charset=iso-8859-1 cela donne ceci : é è à ê

et en charset=utf-8 ce la donne ceci : é è à ê en

Pouvez-vous me dire d'où vient ce problème?
Merci pour votre aide
Philippe
phil
 
Messages: 36
Inscription: 23 Oct 2003 07:27

Re: Problème avec les caractères accentués

Messagepar BigZ » 12 Aoû 2008 10:06

Salut,

Il faudrait que tu nous montre ton script d'envoi de mail.

A++

BigZ
Avatar de l’utilisateur
BigZ
Maître Libellulien
Maître Libellulien
 
Messages: 552
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Problème avec les caractères accentués

Messagepar phil » 12 Aoû 2008 10:29

Le voilà.
Merci




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?

$MailTo = "info@1234546.ch";
$MailSubject = "Contact depuis le site 123456;
$MailHeader = "From: $champ6\n";

$Envoi = 1;

if ($champ1 == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre nom.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Nom : $champ1\n";
}

if ($champ2 == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre prénom.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Prénom : $champ2\n";
}

if ($champ6 == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre adresse e-mail.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " E-mail : $champ6\n";
}

if ($champ7 == "0"){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre téléphone.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Téléphone : $champ7\n";
}

if ($textarea1 == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre question.</font><br>");
$Envoi = 0;
}

else {
$MailBody .= " Question : $textarea1\n";
}

if ($Envoi == 0) echo("<p>&nbsp;</p><p>&nbsp;</p><p align=center><a href=Javascript:history.go(-1)><strong>Retour</strong></a></p>");
//Envoi du message

if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message

echo("<p><font face=verdana size=2>Votre message a bien été envoyé à 123456.<br>Nous répondrons à votre demande dans les plus brefs délais.</font>"); echo("<p>&nbsp;</p><p align=\"center\"><a href=Javascript:history.go(-1)><strong>Poser une autre question</strong></a></p><p>&nbsp;</p><p align=\"center\"><a href=\presentations.php><strong>Retour au site</strong></a></p>"); //affichage d'un message de confirmation.
}

?>
</body>
</html>
Philippe
phil
 
Messages: 36
Inscription: 23 Oct 2003 07:27

Re: Problème avec les caractères accentués

Messagepar BigZ » 12 Aoû 2008 10:54

Du coup. ca me semble pas complet ton script...

Tu pourrai me donner également le code du formulaire?

MErci

P.S. Oublie pas les balises Code :supers:
Avatar de l’utilisateur
BigZ
Maître Libellulien
Maître Libellulien
 
Messages: 552
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Problème avec les caractères accentués

Messagepar phil » 12 Aoû 2008 18:44

Voici le formulaire
Merci et toutes mes excuses pour les balises!


Code: Tout sélectionner
<form method="POST" action="/controle/form_contact.php" name="AVIS">
      <table width="33%" height="292"  border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td valign="middle">&nbsp;</td>
          <td colspan="2" align="left" valign="middle" > <p>Nom *</p></td>
          <td align="left" valign="middle"><p>
              <input name="champ1" type="text" id="champ12" size="25" />
            </p></td>
        </tr>
        <tr>
          <td valign="middle">&nbsp;</td>
          <td colspan="2" align="left" valign="middle"> <p>Pr&eacute;nom *</p></td>
          <td align="left" valign="middle"><p>
              <input name="champ2" type="text" id="champ2" size="25" />
            </p></td>
        </tr>
        <tr>
          <td valign="middle">&nbsp;</td>
          <td colspan="2" align="left" valign="middle" > <p>E-m<span >a</span>il
              *</p></td>
          <td align="left" valign="middle"><p>
              <input name="champ6" type="text" id="champ6" size="40" />
            </p></td>
        </tr>
        <tr>
          <td valign="middle">&nbsp;</td>
          <td width="86" align="left" valign="middle"> <p>T&eacute;léphone </p></td>
          <td width="47" align="left" valign="middle"><font color="#FFFFFF">xx</font></td>
          <td align="left" valign="middle"><p>
              <input name="champ7" type="text" id="champ7" size="20" />
            </p></td>
        </tr>
        <tr>
          <td valign="middle">&nbsp;</td>
          <td colspan="3" align="left" valign="middle">&nbsp;</td>
        </tr>
        <tr>
          <td width="1" height="98">&nbsp;</td>
          <td colspan="2" align="left" valign="top"> <p>Question *</p></td>
          <td width="335"><p>
              <textarea name="textarea1" cols="50" rows="10" id="textarea1"></textarea>
            </p></td>
        </tr>
      </table>
      <table width="474" height="71" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="1" height="46">&nbsp;</td>
          <td width="1">&nbsp;</td>
          <td width="97">&nbsp;</td>
          <td width="180"> <input type="submit" value="Envoyer" name="envoyer"
   style="font-family: Trebuchetms,Arial,Verdana,Helvetica;font-size: 11px; color:#06f ;font-weight:bold;background-color: #006C;width:180px;" /> </font></small>
          </td>
          <td width="195"><small><font face="Verdana">
            <input type="reset" value="Recommencer" name="recommencer"
    style="font-family: Trebuchetms,Arial,Verdana,Helvetica;font-size: 11px; color:#06f ;font-weight:bold;background-color: #006C;width:180px;" />
            </font></small></td>
        </tr>
      </table>
          </form>
Philippe
phil
 
Messages: 36
Inscription: 23 Oct 2003 07:27

Re: Problème avec les caractères accentués

Messagepar BigZ » 13 Aoû 2008 07:37

Bon alors avant de commencer, je suppose que ton serveur est configuré avec le paramètre "register_global" a on, ce qui n'est pas bon du tout. Il faudrait que tu corrige cela.

Une fois que ca sera fait, ton script ne fonctionnera plus. Tu ne pourrai plus récupérer tes varibles comme ca :

echo $champ1;
Il faudra que tu précise "qui" à envoyé la variable (POST, GET, SESSION, COOKIE...)

Donc tu devra faire cela pour afficher le contenu du champ1

echo $_POST['champ1'];

Tu peux également redéfinir tes variables : $champ1 = $_POST['champ1'];

Ce qui donnerai pour ton script :

Code: Tout sélectionner
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?
$MailTo = "info@1234546.ch";
$MailSubject = "Contact depuis le site 123456;
$MailHeader = "From: $_POST['champ6']\n";

$Envoi = 1;

if ($_POST['champ1'] == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre nom.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Nom : $_POST['champ1']\n";
}

if ($_POST['champ2'] == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre prénom.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Prénom : $_POST['champ2']\n";
}

if ($_POST['champ6'] == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre adresse e-mail.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " E-mail : $_POST['champ6']\n";
}

if ($_POST['champ7'] == "0"){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre téléphone.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= " Téléphone : $_POST['champ7']\n";
}

if ($_POST['textarea1'] == ""){
echo("<font face=verdana size=2>Le formulaire n'est pas complet, il manque votre question.</font><br>");
$Envoi = 0;
}

else {
$MailBody .= " Question : $_POST['textarea1']\n";
}

if ($Envoi == 0) echo("<p>&nbsp;</p><p>&nbsp;</p><p align=center><a href=Javascript:history.go(-1)><strong>Retour</strong></a></p>");
//Envoi du message

if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message

echo("<p><font face=verdana size=2>Votre message a bien été envoyé à 123456.<br>Nous répondrons à votre demande dans les plus brefs délais.</font>"); echo("<p>&nbsp;</p><p align=\"center\"><a href=Javascript:history.go(-1)><strong>Poser une autre question</strong></a></p><p>&nbsp;</p><p align=\"center\"><a href=\presentations.php><strong>Retour au site</strong></a></p>"); //affichage d'un message de confirmation.
}

?>
</body>
</html>


Mais cela ne va pas forcément corriger ton problème d'accent dans tes e-mails.
On va essayer comme ça :
A la place de : $MailHeader = "From: $_POST['champ6']\n";
Met :
$MailHeader = "From: $_POST['champ6']\n";
$MailHeader .= "Content-type: text/plain; charset=iso-8859-1\n";

C'est pas dit que ca fonctionne, mais bon...faut essayer ;-)
Avatar de l’utilisateur
BigZ
Maître Libellulien
Maître Libellulien
 
Messages: 552
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Problème avec les caractères accentués

Messagepar BigZ » 14 Aoû 2008 15:44

Ok, je pense avoir ta solution :

Rajoute tout en haut de ton code php (après le <?) ceci :

Code: Tout sélectionner
$_POST = array_map('utf8_decode', $_POST);
Avatar de l’utilisateur
BigZ
Maître Libellulien
Maître Libellulien
 
Messages: 552
Inscription: 24 Juin 2003 09:56
Localisation: Genève

Re: Problème avec les caractères accentués

Messagepar phil » 15 Aoû 2008 09:24

Merci,

Je vais essayer tout ça en rentrant de week end.
Philippe
phil
 
Messages: 36
Inscription: 23 Oct 2003 07:27


Retourner vers Développement, conception de sites web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités