Aller au contenu

Problème avec la page contact


Sujets conseillés

Posté

Bonjour,

je ne sais pas pour quelle raison le texte des messages envoyés depuis ma page de contact ne s'affichait plus dans ma boîte aux lettres.

En regardant la source j'avais :

begin 666 ajoutés guillemets.htm

M0F]N:F]U<BP-#0H-#0I-86EL(&5N=F]YPZD_AT_9&5P=6ES(&QE('-I=&4_AT_8G5L

M9V%R:6$M9G)A;F-E('!A<B!&<F%NPZ=O:7-E#0T*#0T*365S<V%G92 Z#0T*

M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0T*8FS#J6)LPZD-#0HJ*BHJ

:*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-#0H`

`

end

J'ai apporté quelques modifications, sans trop savoir quoi et en fouillant des scripts trouvés sur le net.

Maintenant le texte s'affiche, mais pas correctement :

envoyé

Le code de l'entête est :

 $headers = 'From: '.$nom.' <'.$expediteur.'>'."\n";
$headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n";
$headers .='Content-type: text/plain; charset="charset=utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

J'ai fait des tests avec text/html, mais, là aussi le texte ne s'affiche pas. Avec text/plain, ça a l'air bon.

Le code de toute la page est un peu long pour le publier dans son intégralité, mais peut-être avez-vous une idée ?

Posté (modifié)

C'est peut-être une histoire d'encodage :

"é" encodé en UTF-8 sur 2 octets donne "é"

Il faut passer en Iso ?

A voir avec les plus calés

Modifié par Melkior
Posté

Merci. J'attends les lumières de quelqu'un. Le problème vient de je ne sais où, j'ai cette page depuis des années.

Depuis peu je suis sur un serveur pou Php5.

Je reçois des emails aussi bien en français qu'en cyrillique, donc si je change le charset en ISO, j'aurai un autre problème.

Et puis, je n'y connais rien en php avec tous ces r, n, les point, les guillemets doubles ou pas, etc :)

Il faut peut-être ajouter un utf_8_encode ou utf_8_decode, mais je ne saurais où.:?:

Edit 27 août

J'avais mis deux fois charset. J'ai corrigé et ajouté MIME.

$headers = 'From: '.$nom.' <'.$expediteur.'>'."\n";
$headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .='Content-type: text/plain; charset=utf-8'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

Maintenant le texte s'affiche bien SAUF de (nom de l'expéditeur), qui s'affiche :

Françoise

Posté

Salut,

je ne sais plus quoi faire, après moults ajouts et suppressions de guillemets, virgules et autres :)

Je me permets de vous soumettre tout le code (j'ai supprimé la grosse partie en html).

C'est juste le nom de l'expéditeur qui ne s'affiche pas bien :

De HélÚne

et concernant l'email, si je fais "répondre :

Le 27/08/2010 14:12, HélÚne a écrit :

Le sujet et le texte du message s'affichent correctement.

<?php
if (isset($_POST['envoye']))
{
/* Recuperation des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$nom = stripslashes(trim($_POST['nom']));
$expediteur = stripslashes(trim($_POST['email']));
$objet = stripslashes(trim($_POST['objet']));
$message = stripslashes(trim($_POST['message']));
}
else
{
$nom = trim($_POST['nom']);
$expediteur = trim($_POST['email']);
$objet = trim($_POST['objet']);
$message = trim($_POST['message']);
}

/* Verifier si format adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';

/* Expression reguliere permettant de verifier qu'aucun
* en-tete n'est insrit dans nos champs */
$regex_head = '/[\n\r]/';

/*
On verifie que tous les champs sont remplis */
if (empty($nom)
|| empty($expediteur)
|| empty($objet)
|| empty($message))
{
$alert = 'Tous les champs doivent etre remplis';
}
/* On verifie que le format de l'e-mail est correct */
elseif (!preg_match($regex_mail, $expediteur))
{
$expediteur = "<span class='alert'>" . $expediteur . "</span>";
$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
}
/* On verifie qu'il n'y a aucun header dans les champs */
elseif (preg_match($regex_head, $expediteur)
|| preg_match($regex_head, $nom)
|| preg_match($regex_head, $objet))
{
$alert = 'Entetes interdites dans les champs du formulaire';
}
/* Si aucun probleme et aucun cookie cr, on construit le message et on envoie l'e-mail */
elseif (!isset($_COOKIE['sent']))
{
$to = 'moi_AT_site.com'."\r\n";

/* Construction du message */
$msg = 'Mail envoyé depuis le site '.$nom."\r\n\r\n";
$msg .= 'Message :'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= $message."\r\n";
$msg .= '***************************'."\r\n";

/* En-tetes de l'e-mail */
$headers = 'From: '.$nom.' <'.$expediteur.'>'."\n";
$headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .='Content-Type: text/plain; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit'."\n\n";

/* Envoi de l'e-mail */
if (mail($to, $objet, $msg, $headers))
{
$alert = 'Votre message nous est bien parvenu !';

/* Creation cookie de courte dure (ici 120 secondes) pour eviter de
* renvoyer un mail en rafraichissant la page */
setcookie("sent", "1", time() + 120);

/* On detruit la variable $_POST */
unset($_POST);
}
else
{
$alert = 'Erreur d\'envoi de l\'e-mail, veuillez recommencer SVP';
}

}
/* Cas ou le cookie est cr et que la page est rafraichie, on dtruit la variable $_POST */
else
{
unset($_POST);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Contact</title>
</head>
<body>
<div id="conteneur">
<div id="headertop">
<h1>mon site</h1>
<h2>Blabla</h2>
</div> <!-- fin de l'headertop -->
<div id="centre2">
<h1>Contact</h1>
<?php
if (!empty($alert))
{
echo '<p class="postinfo3">'.$alert.'</p>';
}
?>
<form action="contact.php" method="post">
<p>
<label for="nom">Prénom, Nom :</label><br />
<input type="text" id="nom" name="nom"
value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>"
/>
</p>
<p>
<label for="email">E-mail :</label><br />
<input type="text" id="email" name="email"
value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
/>
</p>
<p><label for="objet" class="strong">Objet du message :</label>
</p>
<p>
<input type="text" id="objet" name="objet" value="<?php echo (isset($_POST['objet'])) ? $objet : '' ?>"
/>
</p>
<p>
<label for="message">Le texte du message :</label><br />
<textarea id="message" name="message" cols="40" rows="4"><?php echo (isset($_POST['message'])) ? $message : '' ?></textarea>
</p>
<p>
<input id="send" type="submit" name="envoye" value="Envoyer le courrier" />
</p>
</form>
</body>
</html>

Posté

Bonjour,

Tu ne précises pas l'encodage dans le head de ta page. Il faut le faire :

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

Ca devrait marcher mieux ;)

Posté

Bonjour Ernestine,

si, si le code y est :

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

Il ne figure pas car j'ai allégé le contenu de la page et supprimé ce qui est dans la partie html, pour ne pas afficher ici un texte trop long.

C'est la partie php du formulaire qui pose problème.

Pendant mes vacances je recevais des emails dont le texte ne s'affichait pas dans la boîte Thunderbird.

J'ai cru que c'était à cause de mon PC portable :)

Je n'avais pas touché à ce fichier. J'ai apporté des modifications ces jours-ci, maintenant le texte s'affiche, mais c'est juste le nom de l'expéditeur, lorsqu'il comporte une cédille ou un accent, qui ne s'affiche pas correctement.

Le texte de message avec des mots accentués s'affiche correctement.

Voici un exemple concret, à la réception :

De s'affiche "Ernéstine"

Le reste est bon.

Mail envoyé depuis le site bulgaria-france.net par Ernéstine

Message :

***************************

Sûrement une petite erreur à corriger.

***************************

Posté

Salut,

maintenant le nom de l'expéditeur s'affiche correctement, j'ai modifié au début :

$nom = utf8_decode(stripslashes(trim($_POST['nom'])));

Et comment se fait-il que l'objet s'affiche bien, sans avoir mis utf_8 decode :?:

(je parle bien sûr d'un objet qui serait un mot avec accent.

Par contre, dans le texte du message, ça ne s'affiche pas comme il faut.

Dois-je ajouter decode ici aussi ?

 /* Construction du message */
$msg = 'Mail envoyé depuis le site '.$nom."\r\n\r\n";

et comment ?

Posté

Bonjour,

personne ne sait ? J'ai posé la question également dans le forum du Zéro, mais...je n'ai eu aucune réponse :(

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...