Problème avec les accents dans le formulaire de contact
cocodu67...
Messages postés
3178
Date d'inscription
Statut
Membre
Dernière intervention
-
cocodu67... Messages postés 3178 Date d'inscription Statut Membre Dernière intervention -
cocodu67... Messages postés 3178 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Depuis que j'ai convertis tous mes fichiers php en UTF8 j'ai un problème avec mon formulaire de contact.
En effet, si les messages envoyés contiennent des accents ça m'envoie quelque chose qui ressemble à "'(-è_èè-('
Ma page de contact http://www.fan-de-mixmaster.legtux.org/formulaire_contact.php est composée d'un fichier contact.php inclus dans un fichier formulaire_contact.php
Voici le code du fichier contact.php :
Remarque : J'ai enlevé presque toutes les questions anti spam afin de raccourcir le code que j'envoie ici.
Merci de votre aide.
Depuis que j'ai convertis tous mes fichiers php en UTF8 j'ai un problème avec mon formulaire de contact.
En effet, si les messages envoyés contiennent des accents ça m'envoie quelque chose qui ressemble à "'(-è_èè-('
Ma page de contact http://www.fan-de-mixmaster.legtux.org/formulaire_contact.php est composée d'un fichier contact.php inclus dans un fichier formulaire_contact.php
Voici le code du fichier contact.php :
<?php /* ******************************************************************************************** CONFIGURATION ******************************************************************************************** */ // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule $destinataire = (ici j'ai volontairement enlevé mon adresse mail); // copie ? (envoie une copie au visiteur) $copie = 'oui'; // Action du formulaire (si votre page a des paramètres dans l'URL) // si cette page est index.php?page=contact alors mettez index.php?page=contact // sinon, laissez vide $form_action = ''; // Messages de confirmation du mail $message_envoye = "<center>Votre message m'est bien parvenu ! Une réponse vous sera envoyée sous 48 heures. <br/><br/><img src='img_diverses/apres_envoie_message.jpg'> </center> "; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; // Message d'erreur du formulaire $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; /* * NoSpamQuestion affiche une question pour la validation d'un formulaire ... * $mode, mode question ou réponse par défaut tirage au sort de question {string} * $answer, lors de la demande d'une réponse à la question numero tant ... {int} * * @returns array * * Ajouter une question : * copier/coller ces lignes et remplir le contenu entre guillemets doubles : * * $array_pictures[$j]['num'] = $j; // ne pas changer cette ligne * $array_pictures[$j]['question'] = "mettre ici la question (correspondant à l'image si vous utilisez une image)"; * $array_pictures[$j]['answer'] = "mettre ici la réponse à l'énigme"; * $j++; // ne pas oublier cette ligne dans la copie :-) * * C'est tout. Question suivante ? :-) * */ function NoSpamQuestion($mode = 'ask', $answer = 0) { $array_pictures = array(); $j = 0; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Quelle est la cinquième lettre du mot Astux ?"; $array_pictures[$j]['answer'] = "x"; $j++; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Ecrivez le mot 'arbre' sans guillemets"; $array_pictures[$j]['answer'] = "arbre"; $j++; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Recopier ce nombre : 1200"; $array_pictures[$j]['answer'] = "1200"; $j++; if ($mode != 'ans') { // on est en mode 'tirer au sort', on tire une image aléatoire $lambda = rand(0, count($array_pictures)-1); return $array_pictures[$lambda]; } else { // on demande une vraie réponse foreach($array_pictures as $i => $array) { if ($i == $answer) { return $array; break; }; }; }; // Fin if ($mode != 'ans') }; /* ******************************************************************************************** FIN DE LA CONFIGURATION ******************************************************************************************** */ // on tire au sort une question $nospam = NoSpamQuestion(); /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); return (($value === 0) || ($value === false)) ? false : true; } // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; $antispam_h = (isset($_POST['antispam_h'])) ? Rec($_POST['antispam_h']) : ''; $antispam_r = (isset($_POST['antispam_r'])) ? Rec($_POST['antispam_r']) : ''; // 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é $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin if (isset($_POST['envoi'])) { // On demande la vraie réponse $verif_nospam = NoSpamQuestion('ans', $antispam_r); if (strtolower($antispam_h) != strtolower($verif_nospam['answer'])) { // le formulaire s'arrête ici echo '<p>Vous n\'avez pas répondu correctement à la question Antispam ...</p>'; } else { if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'From:'.$nom.' <'.$email.'>' . "\r\n"; //$headers .= 'Reply-To: '.$email. "\r\n" ; //$headers .= 'X-Mailer:PHP/'.phpversion(); // 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, $objet, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'; } else { echo '<p>'.$message_non_envoye.'</p>'; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.'</p>'; $err_formulaire = true; }; }; }; // fin du if (!isset($_POST['envoi'])) if (($err_formulaire) || (!isset($_POST['envoi']))) { // afficher le formulaire echo ' <form id="contact" method="post" action="'.$form_action.'"> <fieldset><legend>Vos coordonnées</legend> <p><label for="nom">Nom : </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p> <p><label for="email">Email : </label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p> </fieldset> <fieldset><legend>Votre message :</legend> <p><label for="objet">Objet : </label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" /></p> <p><label for="message">Message : </label><textarea id="message" name="message" tabindex="4" cols="55" rows="15">'.stripslashes($message).'</textarea></p> </fieldset> <fieldset><legend>Antispam</legend> Ecrire la réponse sans majuscule ni accent. <p><label for="antispam_h">'.$nospam['question'].'</label> <input type="text" name="antispam_h" id="antispam_h" /> <input type="hidden" name="antispam_r" value="'.$nospam['num'].'" /></p> </fieldset> <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div> </form>'; }; ?>
Remarque : J'ai enlevé presque toutes les questions anti spam afin de raccourcir le code que j'envoie ici.
Merci de votre aide.
A voir également:
- Peut il y avoir des accents dans une adresse mail
- Darkino nouvelle adresse - Guide
- Créer une adresse mail hotmail - Guide
- Adresse mac - Guide
- Supprimer une adresse mail gmail - Guide
- Comment saisir une adresse url - Guide
5 réponses
'lut, tout va bien tant que c'est sur ton site: UTF8+UTF8=pas de problèmes.
Mais les mails sont envoyés par défaut dans le charset ISO-8859-1, il faut donc préciser l'encodage (en supposant que tes mails sont faits uniquement de texte brut):
from human import idiocy
del idiocy
Mais les mails sont envoyés par défaut dans le charset ISO-8859-1, il faut donc préciser l'encodage (en supposant que tes mails sont faits uniquement de texte brut):
$nom = "=?UTF-8?B?".base64_encode($nom)."?="; $objet = "=?UTF-8?B?".base64_encode($objet)."?="; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n"; $headers .= 'Content-Type: text/plain; charset=UTF-8;' . "\r\n"; ...
from human import idiocy
del idiocy
Afin d'y voir plus clair, j'ai décidé d'installer Mozilla Thunderbird et de consulter mes mails dessus à la place d'utiliser Windows Live Mail qui est largement dépassé.
Je suis allé sur la page du formulaire de contact et j'ai fais 2 tests.
Premier :
Envoie d'un message en mettant une adresse @orange.fr dans le formulaire.
Résultat :
Que le mail soit lut depuis le site orange.fr ou depuis Mozilla Thunderbirds, ni le nom-prénom, ni l'objet ni le corps du mail n'affichent correctement les accents dans la copie du mail envoyée à l'adresse indiquée dans le formulaire.
Deuxième :
Envoie d'un message en mettant une adresse @hotmail.fr dans le formulaire.
Résultat :
Pour la consultation de la copie du mail envoyée, via le site de outlook le corps c'est ok mais pas l'objet. Pour la consultation via Mozilla Thunderbird, même soucis.
A noter que dans tous les cas, dans le mail envoyé à mon adresse @legtux.org, c'est à dire le seul envoyé si je désactive l'envoie de la copie du message, l'objet des mails a le problème avec les accents mais jamais le corps, qu'on ait marqué une adresse @hotmail ou @orange dans le formulaire.
Je pense que le plus logique serait de chercher un autre formulaire de contact mais celui-ci est vraiment très simple à utiliser, ne nécessite pas une dizaine de fichier comme c'est le cas pour certains formulaires et en plus les questions anti spam sont personnalisables.
Avez vous une idée de ce qu'on pourrait faire ?
Pour rappel, voici le code du fichier contact.php utilisé pour les tests :
Je suis allé sur la page du formulaire de contact et j'ai fais 2 tests.
Premier :
Envoie d'un message en mettant une adresse @orange.fr dans le formulaire.
Résultat :
Que le mail soit lut depuis le site orange.fr ou depuis Mozilla Thunderbirds, ni le nom-prénom, ni l'objet ni le corps du mail n'affichent correctement les accents dans la copie du mail envoyée à l'adresse indiquée dans le formulaire.
Deuxième :
Envoie d'un message en mettant une adresse @hotmail.fr dans le formulaire.
Résultat :
Pour la consultation de la copie du mail envoyée, via le site de outlook le corps c'est ok mais pas l'objet. Pour la consultation via Mozilla Thunderbird, même soucis.
A noter que dans tous les cas, dans le mail envoyé à mon adresse @legtux.org, c'est à dire le seul envoyé si je désactive l'envoie de la copie du message, l'objet des mails a le problème avec les accents mais jamais le corps, qu'on ait marqué une adresse @hotmail ou @orange dans le formulaire.
Je pense que le plus logique serait de chercher un autre formulaire de contact mais celui-ci est vraiment très simple à utiliser, ne nécessite pas une dizaine de fichier comme c'est le cas pour certains formulaires et en plus les questions anti spam sont personnalisables.
Avez vous une idée de ce qu'on pourrait faire ?
Pour rappel, voici le code du fichier contact.php utilisé pour les tests :
<?php /* ******************************************************************************************** CONFIGURATION ******************************************************************************************** */ // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule $destinataire = ******* // copie ? (envoie une copie au visiteur) $copie = 'oui'; // Action du formulaire (si votre page a des paramètres dans l'URL) // si cette page est index.php?page=contact alors mettez index.php?page=contact // sinon, laissez vide $form_action = ''; // Messages de confirmation du mail $message_envoye = "<center>Votre message m'est bien parvenu ! Une réponse vous sera envoyée sous 48 heures. <br/><br/><img src='img_diverses/apres_envoie_message.jpg'> </center> "; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; // Message d'erreur du formulaire $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; /* * NoSpamQuestion affiche une question pour la validation d'un formulaire ... * $mode, mode question ou réponse par défaut tirage au sort de question {string} * $answer, lors de la demande d'une réponse à la question numero tant ... {int} * * @returns array * * Ajouter une question : * copier/coller ces lignes et remplir le contenu entre guillemets doubles : * * $array_pictures[$j]['num'] = $j; // ne pas changer cette ligne * $array_pictures[$j]['question'] = "mettre ici la question (correspondant à l'image si vous utilisez une image)"; * $array_pictures[$j]['answer'] = "mettre ici la réponse à l'énigme"; * $j++; // ne pas oublier cette ligne dans la copie :-) * * C'est tout. Question suivante ? :-) * */ function NoSpamQuestion($mode = 'ask', $answer = 0) { $array_pictures = array(); $j = 0; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Quelle est la cinquième lettre du mot Astux ?"; $array_pictures[$j]['answer'] = "x"; $j++; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Quelle est la deuxième lettre du mot 'plante' ?"; $array_pictures[$j]['answer'] = "l"; $j++; $array_pictures[$j]['num'] = $j; $array_pictures[$j]['question'] = "Recopier ce nombre : 154 "; $array_pictures[$j]['answer'] = "154"; $j++; if ($mode != 'ans') { // on est en mode 'tirer au sort', on tire une image aléatoire $lambda = rand(0, count($array_pictures)-1); return $array_pictures[$lambda]; } else { // on demande une vraie réponse foreach($array_pictures as $i => $array) { if ($i == $answer) { return $array; break; }; }; }; // Fin if ($mode != 'ans') }; /* ******************************************************************************************** FIN DE LA CONFIGURATION ******************************************************************************************** */ // on tire au sort une question $nospam = NoSpamQuestion(); /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); return (($value === 0) || ($value === false)) ? false : true; } // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; $antispam_h = (isset($_POST['antispam_h'])) ? Rec($_POST['antispam_h']) : ''; $antispam_r = (isset($_POST['antispam_r'])) ? Rec($_POST['antispam_r']) : ''; // 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é $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin if (isset($_POST['envoi'])) { // On demande la vraie réponse $verif_nospam = NoSpamQuestion('ans', $antispam_r); if (strtolower($antispam_h) != strtolower($verif_nospam['answer'])) { // le formulaire s'arrête ici echo '<p>Vous n\'avez pas répondu correctement à la question Antispam ...</p>'; } else { if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail // était pas en commentaire $headers = 'From:'.$nom.' <'.$email.'>' . "\r\n"; //$headers .= 'Reply-To: '.$email. "\r\n" ; //$headers .= 'X-Mailer:PHP/'.phpversion(); $nom = "=?UTF-8?B?".base64_encode($nom)."?="; $objet = "=?UTF-8?B?".base64_encode($objet)."?="; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n"; $headers .= 'Content-Type: text/plain; charset=UTF-8;' . "\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, $objet, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'; } else { echo '<p>'.$message_non_envoye.'</p>'; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.'</p>'; $err_formulaire = true; }; }; }; // fin du if (!isset($_POST['envoi'])) if (($err_formulaire) || (!isset($_POST['envoi']))) { // afficher le formulaire echo ' <form id="contact" method="post" action="'.$form_action.'"> <fieldset><legend>Vos coordonnées</legend> <p><label for="nom">Nom : </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p> <p><label for="email">Email : </label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p> </fieldset> <fieldset><legend>Votre message :</legend> <p><label for="objet">Objet : </label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" /></p> <p><label for="message">Message : </label><textarea id="message" name="message" tabindex="4" cols="55" rows="15">'.stripslashes($message).'</textarea></p> </fieldset> <fieldset><legend>Antispam</legend> Ecrire la réponse sans majuscule ni accent. <p><label for="antispam_h">'.$nospam['question'].'</label> <input type="text" name="antispam_h" id="antispam_h" /> <input type="hidden" name="antispam_r" value="'.$nospam['num'].'" /></p> </fieldset> <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div> </form>'; }; ?>
Salut,
Plusieurs éléments à prendre en compte si tu souhaites travailler en UTF-8 :
1. htmlentities/htmlspecialchars : si le default_charset de php n'est pas l'encodage souhaité, il faut renseigner le 3ème paramètre :
D'ailleurs l'utilisation de htmlspecialchars dès la récupération des données n'est recommandée, il faudrait utiliser cette fonction lors de la génération du contenu html de ton mail (pour remplacer la série de str_replace)
2. Les fonctions php sur les chaines de caractères (http://fr2.php.net/manual/fr/ref.strings.php) provoquent des résultats incorrect sur des chaines en utf-8. Il faut utiliser à la place les fonctions multibyte (https://www.php.net/manual/fr/ref.mbstring.php Exemple :
3. Même principe pour la fonction preg_match, il faut utiliser le modifieur 'u' pour traiter des chaines en utf-8 (https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
Si ta version de php te le permet, préfère l'utilisation de la fonction filter_var() avec le filtre FILTER_VALIDATE_EMAIL pour vérifier l'adresse mail.
4. De mémoire le sujet d'un mail ne peut pas être encodé en UTF-8, tu es donc obliger d'utiliser des entités html (à vérifier). Pour le corps du mail tu ne devrais pas avoir de soucis à utiliser des caractères en utf-8 tant que le charset est correctement déclaré.
Bonne journée
Plusieurs éléments à prendre en compte si tu souhaites travailler en UTF-8 :
1. htmlentities/htmlspecialchars : si le default_charset de php n'est pas l'encodage souhaité, il faut renseigner le 3ème paramètre :
htmlspecialchars($value, ENT_QUOTES, 'UTF-8')
D'ailleurs l'utilisation de htmlspecialchars dès la récupération des données n'est recommandée, il faudrait utiliser cette fonction lors de la génération du contenu html de ton mail (pour remplacer la série de str_replace)
2. Les fonctions php sur les chaines de caractères (http://fr2.php.net/manual/fr/ref.strings.php) provoquent des résultats incorrect sur des chaines en utf-8. Il faut utiliser à la place les fonctions multibyte (https://www.php.net/manual/fr/ref.mbstring.php Exemple :
echo strlen('père'); // affiche 5 car l'accent est encodé sur deux octets echo mb_strlen('père'); // affiche 4
3. Même principe pour la fonction preg_match, il faut utiliser le modifieur 'u' pour traiter des chaines en utf-8 (https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
Si ta version de php te le permet, préfère l'utilisation de la fonction filter_var() avec le filtre FILTER_VALIDATE_EMAIL pour vérifier l'adresse mail.
4. De mémoire le sujet d'un mail ne peut pas être encodé en UTF-8, tu es donc obliger d'utiliser des entités html (à vérifier). Pour le corps du mail tu ne devrais pas avoir de soucis à utiliser des caractères en utf-8 tant que le charset est correctement déclaré.
Bonne journée
4. Non, et je sais même pas si les clients mails interprètent les escapes HTML dans le titre/nom d'expéditeur. La RFC1342 qui décrit comment transférer du texte non-ASCII dans les headers, a introduit ceci:
=?charset?encodage?texte-encodé?=, où encodage est B (base64) ou Q (quotable); utilisable dans n'importe quel type d'header des "Messages Internet" (mail, HTTP, etc...)
Bonsoir
Après avoir cherché toute l'après midi, le php m'a vaincu ...
J'ai décidé de mettre en place un nouveau formulaire et j'en ais profité pour rajouter des checkbox, ce qui augmente encore l'efficacité anti spam puisque le formulaire n'est pas envoyé si on ne coche pas au minimum une case.
Sachez tout de même que vous n'avez pas tenté de m'aider inutilement !
Je sais maintenant qu'il peut y avoir quelques soucis si on utilise un encodage utf-8 et comme j'ai un peu de temps libre ces prochains jours je vais voir ce qu'on peut faire pour résoudre le soucis avec la première version du formulaire dont j'ai gardé le code.
Si jamais vous avez une idée, n'hésitez pas.
Il y a certainement de bonnes pistes dans le message https://forums.commentcamarche.net/forum/affich-30443350-probleme-avec-les-accents-dans-le-formulaire-de-contact#9 mais malheureusement mon niveau en PHP est assez bas et là je suis perdu en lisant ces tutos.
Bonne soirée :)
Après avoir cherché toute l'après midi, le php m'a vaincu ...
J'ai décidé de mettre en place un nouveau formulaire et j'en ais profité pour rajouter des checkbox, ce qui augmente encore l'efficacité anti spam puisque le formulaire n'est pas envoyé si on ne coche pas au minimum une case.
Sachez tout de même que vous n'avez pas tenté de m'aider inutilement !
Je sais maintenant qu'il peut y avoir quelques soucis si on utilise un encodage utf-8 et comme j'ai un peu de temps libre ces prochains jours je vais voir ce qu'on peut faire pour résoudre le soucis avec la première version du formulaire dont j'ai gardé le code.
Si jamais vous avez une idée, n'hésitez pas.
Il y a certainement de bonnes pistes dans le message https://forums.commentcamarche.net/forum/affich-30443350-probleme-avec-les-accents-dans-le-formulaire-de-contact#9 mais malheureusement mon niveau en PHP est assez bas et là je suis perdu en lisant ces tutos.
Bonne soirée :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Avec Notepad++ ( gratuit sur : http://notepad-plus-plus.org/fr/ )tu peux aller tout en haut dans la section "Encodage" . Par défaut , il y aura "Encoder en utf8 ( sans bom ) . Mais pour justement avoir les accents , juste en bas tu as "Encoder en ut-8" . Cliques dessus puis réactualise et voilà !!!!!
Tiens moi au courant ,
Julien (MiniDJ92)
Tiens moi au courant ,
Julien (MiniDJ92)
J'ai mis votre code dans la page mais ça me donne
Parse error: syntax error, unexpected '$headers' (T_VARIABLE) in /var/www/legtux.org/users/fan-de-mixmaster/contact.php on line 216
Je vous met le passage concerné :
J'ai souligné la ligne 216
"comment avez vous vu cela": le format basique des mails défini par la RFC5322 ne définit pas d'encodage particulier ("Note" du §1.1) mais la grande majorité des clients mails interprètent encore les mails en ISO-8859-1 par défaut pour des raisons historiques.
Résultat :
Pour le mail envoyé sur mon adresse en legtux.org
Le corps du mail : &é"'(-è_çà)=
Donc c'est bon.
L'objet du mail : &*a*mp;é&*quot;&*#*03*9;(-è_çà)= (j'ai rajouté des étoiles car CCM remplace ce charabia par les bons caractères.
Donc il y a un soucis mais seulement avec certains caractères.
Ensuite dans le champ email j'ai marqué une adresse hotmail.fr m'appartenant.
Dans le corps du mail je vois ça :
From:=?UTF-8?B?JmFtcDvDqSZxdW90OyYjMDM5Oygtw6hfw6fDoCk9?= <mon adresse@hotmail.fr>
Content-Type: text/plain; charset=UTF-8;
Message-Id: <je préfère le cacher @mail.legtux.org>
Date: Wed, 2 Jul 2014 13:27:08 +0200 (CEST)
Return-Path: postmaster@legtux.org
X-OriginalArrivalTime: 02 Jul 2014 11:27:09.0769 (UTC) FILETIME=[8FFCBB90:01CF95E8]
&é"'(-è_çà )=
Donc le corps du mail supporte pas les accents lorsque je consulte mes mails dans Windows Live Mail mais je devrais songer à prendre un autre logiciel car celui-là n'est plus maintenu à jour depuis longtemps.
Lorsque je consulte le mail depuis le site de Outlook, le corps c'est bon mais pas l'objet du mail.
Bon c'est un peu compliqué tout ça mais avant l'encodage que j'avais avant tout fonctionnait parfaitement et ça fait moche les -è_çà à la place des accents.