8791 sujets

Développement web côté serveur, CMS

Bonjour

Voici mon problème, j'ai passé tout l'après-midi dessus avec un collègue et un ami, à regarder sur plusieurs forums, je n'ai toujours pas ma solution.

Il s'agit d'une demande de contact réalisée sur un site internet, avec un envoie de mail.
Le problème : dans le mail le retours à la ligne saisis apparaissent.

Dans le mail on obtient quelque chose du genre :
"Bonjour,\r\n\r\n\r\n\r\nJ\\\'habite la Réunion, avez vous un revendeur sur place ?"

Tout ça sachant que :
- les caractères spéciaux (ex : & é ç € @ % $) passent
- mes pages contact et réception, ainsi que le mail sont en "charset=iso-8859-1"

J'ai testé plusieurs petites choses, dont les fonctions suivantes :
$clean = rtrim($texte);
$string=str_replace("\r\n", " ", $texte);
qui n'ont pas marché ... aurais-je oublié un détail tout bête ?

Je vous mets les extraits de code de ma page réception :
a écrit :
# variables du message envoyé
$to = "blabla@blabla.fr";
$subject = "demande de contact BLABLA";

$headers = "From: Webmaster BLABLA <gilbert-zoya@orange.fr>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la s&eacute;curit&eacute;
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
$societe = mysql_real_escape_string(htmlspecialchars($_POST['societe']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$horaire = mysql_real_escape_string(htmlspecialchars($_POST['horaire']));
$ville = mysql_real_escape_string(htmlspecialchars($_POST['ville']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
$texte = mysql_real_escape_string(htmlspecialchars($_POST['texte']));

# appel a la fonction mail
$message = "<p><b>GUIDE ZOYA :</b><br /><br />
<font color = #ff0000>Attention : Pour envoyer une réponse à l'internaute <b>ne cliquez pas sur le bouton répondre</b> de votre boite mail mais copiez l'adresse dans un nouveau mail !!!</font><br /><br />
Demande de contact réalisée sur le site de BLABLA le " . $date . " à " . $heure .
"</p> <b>Coordonnées client :</b>
<br /> Nom : " . $nom .
"<br />Prénom : " . $prenom .
"<br /> societe : " . $societe .
"<br /> Ville : " . $ville .
"<br /> Téléphone : " . $telephone .
"<br /> Horaire de contact souhaité : " . $horaire .
"<br /> Email : " . $email .
"<p> <b>Objet du contact :</b> " . $clean .
"</p>";
" . ";
$emailblabla = "blabla@blabla.com";
mail($emailblabla, $subject, $message, $headers);


Merci par avance de tous vos conseils Smiley cligne
Modifié par Dehionara (22 Sep 2008 - 11:47)
bonjour

concernant le message à envoyer , tu a bien respecter cette règle :
a écrit :

Il ne doit comporter aucun caractère de nouvelle ligne sinon, le mail risque de ne pas être envoyé correctement.


??
++
Bonjour,

j'ai déplacé le sujet qui ne concerne pas l'encodage mais PHP :

pourquoi utilises-tu mysql_real_escape_string qui sert à échapper (rajouter \ devant) les caractères particuliers susceptibles de provoquer un problème lors d'une requête mysql ? Smiley rolleyes

htmlspecialchars suffit amplement... Tu peux également rajouter un strip_tags devant tes variables si le coeur t'en dit.

Concernant les retours à la ligne tu peux utiliser nl2br sur un champ textarea...
Bonjour,

J'ai trouvé la solution à mon problème de retour à la ligne.
J'ai utilisé la fonction suivante :

$clean = htmlentities ($texte,ENT_QUOTES);

Pour répondre à Heyoan, j'utilisais mysql_real_escape_string tout simplement parce que ce n'est pas moi qui avait fait le code au départ, et comme ça fonctionnait pas trop mal, je ne m'étais pas posée plus de questions. Mais comme j'ai plus de temps, je peaufine. Smiley smile

Merci en tous cas de vos réponses.