Texte brute dans formulaire PHP
Résolu
Hanz0
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
Hanz0 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Hanz0 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà j'ai utilisé un générateur pour mon formulaire de contact en php, il fonctionne à merveille si ce n'est que j'ai un problème : quand je reçois l'e-mail, les caractères accentués ne passent pas du tout.
Donc la question est la suivante (à savoir ce qu'il y a de plus simple) :
comment je peux soit tout changer pour que j'ai l'e-mail en texte brut, ou que dois-je modifier dans mon code pour que les caractères apparaissent correctement.
D'avance merci pour votre aide.
Voilà j'ai utilisé un générateur pour mon formulaire de contact en php, il fonctionne à merveille si ce n'est que j'ai un problème : quand je reçois l'e-mail, les caractères accentués ne passent pas du tout.
Donc la question est la suivante (à savoir ce qu'il y a de plus simple) :
comment je peux soit tout changer pour que j'ai l'e-mail en texte brut, ou que dois-je modifier dans mon code pour que les caractères apparaissent correctement.
<?php // On vérifie si la fonction ini_set() a été désactivée... $desactive = ini_get('disable_functions'); if (preg_match("/ini_set/i", "$desactive") == 0) { // Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs... ini_set("error_reporting" , "E_ALL & ~E_NOTICE"); } // Vérifier que le formulaire a été envoyé... if (isset($_POST['envoi'])) { //On commence une session pour enregistrer les variables du formulaire... session_start(); $_SESSION['champ1'] = $_POST['champ1']; $_SESSION['champ2'] = $_POST['champ2']; $_SESSION['champ3'] = $_POST['champ3']; $_SESSION['zone_email1'] = $_POST['zone_email1']; $_SESSION['liste1'] = $_POST['liste1']; $_SESSION['liste2'] = $_POST['liste2']; //Enregistrement des zones de texte... $_SESSION['zone_texte1'] = $_POST['zone_texte1']; // Définir l\'icone apparaissant en cas d\'erreur... // Définir sur 0 pour afficher un petit x de couleur rouge. // Définir sur 1 pour afficher l\'image d\'une croix rouge telle que celle utilisée dans l\'assistant // Si vous utilisez l\'option 1, l\'image de la croix rouge \'icone.gif\' doit se trouver dans le répertoire \'images\', // ce dernier devant se trouver au même niveau que votre formulaire... $flag_icone = 0; // On vérifie si $flag_icone est défini sur 0 ou 1... if ($flag_icone == 0) { $icone = "<b><font size=\"3\" face=\"Arial, Verdana, Helvetica, sans-serif\" color=\"#CC0000\">x</font></b>"; } else { $icone = "<img src=\"images/icone.gif\""; } // Définir l'indicateur d'erreur sur zéro... $flag_erreur = 0; // N'envoyer le formulaire que s'il n'y a pas d'erreurs... if ($flag_erreur == 0) { // Addresse de réception du formulaire $email_dest = "infos@widelinkpc.be"; $sujet = "Renseignements - Sites"; $entetes ="MIME-Version: 1.0 \n"; $entetes .="From: Wide Link PC<info@nomdedomaine.be>\n"; $entetes .="Return-Path: Domaine<info@nomdedomaine.be>\n"; $entetes .="Reply-To: Domaine<info@nomdedomaine.be>\n"; $entetes .="Content-Type: text/html; charset=iso-8859-1 \n"; $partie_entete = "<html>\n<head>\n<title>Formulaire</title>\n<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n</head>\n<body bgcolor=#FFFFFF>\n"; //Partie HTML de l'e-mail... $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Nom = " . $_SESSION['champ1'] . "</font><br>\n"; $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Numéro de téléphone = " . $_SESSION['champ2'] . "</font><br>\n"; $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Sujet de l\'email = " . $_SESSION['champ3'] . "</font><br>\n"; $partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Email = " . $_SESSION['zone_email1'] . "</font><br>\n"; $partie_listes .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Civilité = " . $_SESSION['liste1'] . "</font><br>\n"; $partie_listes .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Statut = " . $_SESSION['liste2'] . "</font><br>\n"; $partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre message = " . $_SESSION['zone_texte1'] . "</font><br>\n"; // Fin du message HTML $fin = "</body></html>\n\n"; $sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_listes . $partie_boutons . $partie_cases . $partie_zone_texte . $fin; // Send the e-mail if (@!mail($email_dest,$sujet,$sortie,$entetes)) { echo("Envoi du formulaire impossible"); exit(); } else { // Rediriger vers la page de remerciement header("Location:http://www.nomdedomaine.be"); exit(); } // Fin else } // Fin du if ($flag_erreur == 0) { } // Fin de if 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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> </head> <body> <form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong>Formulaire de contact</strong></font></div><br><table align="center" width="566" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="16"><div align="center"> <font color="#CC0000" size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong><?php if ($erreur_champ1) { echo(stripslashes($erreur_champ1)); } else { if ($erreur_champ2) { echo(stripslashes($erreur_champ2)); } else { if ($erreur_champ3) { echo(stripslashes($erreur_champ3)); } else { if ($erreur_email1) { echo(stripslashes($erreur_email1)); } else { if ($erreur_liste1) { echo(stripslashes($erreur_liste1)); } else { if ($erreur_liste2) { echo(stripslashes($erreur_liste2)); } else { if ($erreur_texte1) { echo(stripslashes($erreur_texte1)); } else { } // Fin du else... } // Fin du else... } // Fin du else... } // Fin du else... } // Fin du else... } // Fin du else... } // Fin du else... ?> </strong></font> </div></td> </tr> </table> <p align="center"></p><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Nom</font></div></td> <td align="center" valign="middle" width="30"> <?php if ($erreur_champ1) { echo($icone); } ?> </td> <td><input name="champ1" type="text" value="<?=stripslashes($_SESSION['champ1']);?>"></td> </tr></table><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Numéro de téléphone</font></div></td> <td align="center" valign="middle" width="30"> <?php if ($erreur_champ2) { echo($icone); } ?> </td> <td><input name="champ2" type="text" value="<?=stripslashes($_SESSION['champ2']);?>"></td> </tr></table><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Sujet de l'email</font></div></td> <td align="center" valign="middle" width="30"> <?php if ($erreur_champ3) { echo($icone); } ?> </td> <td><input name="champ3" type="text" value="<?=stripslashes($_SESSION['champ3']);?>"></td> </tr></table><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Email</font></div></td> <td width="30" align="center" valign="middle"> <?php if ($erreur_email1) { echo($icone); } ?> </td> <td><input name="zone_email1" type="text" value="<?=stripslashes($_SESSION['zone_email1']);?>"></td> </tr></table><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Civilité</font></div></td> <td width="30" align="center" valign="middle"> <?php if ($erreur_liste1) { echo($icone); } ?> </td> <td><select name="liste1" style="width:146"><option value="">Sélectionner...</option> <option value="Mademoiselle"<?php if ($_SESSION['liste1'] == "Mademoiselle") { echo(" selected"); } ?>>Mademoiselle</option> <option value=" Madame"<?php if ($_SESSION['liste1'] == " Madame") { echo(" selected"); } ?>> Madame</option> <option value=" Monsieur"<?php if ($_SESSION['liste1'] == " Monsieur") { echo(" selected"); } ?>> Monsieur</option> </select></td></tr></table><table width="566" border="0" align="center"><tr> <td width="140"><div align="right"><font face="Verdana" size="2">Statut</font></div></td> <td width="30" align="center" valign="middle"> <?php if ($erreur_liste2) { echo($icone); } ?> </td> <td><select name="liste2" style="width:146"><option value="">Sélectionner...</option> <option value="Particulier"<?php if ($_SESSION['liste2'] == "Particulier") { echo(" selected"); } ?>>Particulier</option> <option value=" Entreprise"<?php if ($_SESSION['liste2'] == " Entreprise") { echo(" selected"); } ?>> Entreprise</option> </select></td></tr></table><table width="566" border="0" align="center"><tr> <td width="140" valign="top"><div align="right"><font face="Verdana" size="2">Votre message</font></div></td> <td width="30" align="center" valign="top"> <?php if ($erreur_texte1) { echo($icone); } ?> </td> <td><textarea name="zone_texte1" cols="45" rows="10"><?=stripslashes($_SESSION['zone_texte1']);?></textarea></td> </tr></table><table width="566" border="0" align="center"><tr> <td valign="top"><div align="center"> <input type="reset" name="Reset" value=" Effacer "> <input type="submit" name="envoi" value="Envoyer"> </div></td></tr></table><div align="center"><input name="nbre_fichiers" type="hidden" id="nbre_fichiers" value=""></div></form> </body> </html>
D'avance merci pour votre aide.
A voir également:
- Texte brute dans formulaire PHP
- Whatsapp formulaire opposition - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Formulaire de réclamation facebook - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
4 réponses
Salut,
header de ton mail "charset=iso-8859-1".
header de ta page contact "charset=utf-8".
Donc deux solutions :
1 - Soit tu mets les header de ton mail et de ta page au même charset utf-8 ou iso-8859-1.
2 - Soit tu utilises la fonction utf8_decode($champ) au moment ou tu inclus des données formulaire dans ton mail.
header de ton mail "charset=iso-8859-1".
header de ta page contact "charset=utf-8".
Donc deux solutions :
1 - Soit tu mets les header de ton mail et de ta page au même charset utf-8 ou iso-8859-1.
2 - Soit tu utilises la fonction utf8_decode($champ) au moment ou tu inclus des données formulaire dans ton mail.
Salut.
Ton fichier doit être encodé en UTF-8 car c'est cet encodage qui est précisé dans une meta.
Remplace également
Ton fichier doit être encodé en UTF-8 car c'est cet encodage qui est précisé dans une meta.
Remplace également
$entetes .="Content-Type: text/html; charset=iso-8859-1 \n";par
$entetes .="Content-Type: text/html; charset=utf-8 \n";
Bonsoir,
J'ai effectivement mis utf-8 partout, mais je reçois toujours les caractères accentués non "décodés".
Pour la fonction utf8_decode($champ), pourrais-tu me dire exactement où l'inclure.
Merci d'avance.
J'ai effectivement mis utf-8 partout, mais je reçois toujours les caractères accentués non "décodés".
Pour la fonction utf8_decode($champ), pourrais-tu me dire exactement où l'inclure.
Merci d'avance.
Bonsoir,
tout d'abord un grand merci pour la qualité et la rapidité des réponses.
Donc n"étant pas codeur j'ai un peu cherché des repaires dans le codes.
Pour les nuls comme moi voici donc où ça se passe avec le code ci-dessus :
Bien entendu, il faut appliquer à tous les champs où il est susceptible d'avoir des caractères accentués.
Donc là encore j'ai cherché un peu plus loin que le bout de nez et j'ai changé d'adresse e-mail en redirigeant vers Gmail.
Et là tout est impeccable.
Deux solutions s'ouvrent à vous :
1) Appliquer les changements comme indiqué ci-dessus.
2) Si comme moi vous avez Thunderbird, faites comme ceci.
Outils -> Options -> Affichage ->Formatage ->Avancé - Encodage des caractères
Mettez UTF-8 aux 2
Edit : Je viens d'essayer dans Thunderbird et ça ne change rien.
Donc une seule méthode fonctionne.
Carton plein pour le_joker_fou.
Bravo et encore un tout tout grand merci pour l'aide.
Générateur de formulaire de contact PHP : http://www.comscripts.com/scripts/php.assistant-formulaire-php.1587.html
tout d'abord un grand merci pour la qualité et la rapidité des réponses.
Donc n"étant pas codeur j'ai un peu cherché des repaires dans le codes.
Pour les nuls comme moi voici donc où ça se passe avec le code ci-dessus :
//Partie HTML de l'e-mail... $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Nom = " . $_SESSION['champ1'] . "</font><br>\n"; $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Numéro de téléphone = " . $_SESSION['champ2'] . "</font><br>\n"; $partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Sujet de l'email = " . utf8_decode($_SESSION['champ3']) . "</font><br>\n"; $partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Email = " . $_SESSION['zone_email1'] . "</font><br>\n"; $partie_listes .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Civilité = " . $_SESSION['liste1'] . "</font><br>\n"; $partie_listes .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Statut = " . $_SESSION['liste2'] . "</font><br>\n"; $partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre message = " . $_SESSION['zone_texte1'] . "</font><br>\n"; ...
Bien entendu, il faut appliquer à tous les champs où il est susceptible d'avoir des caractères accentués.
Donc là encore j'ai cherché un peu plus loin que le bout de nez et j'ai changé d'adresse e-mail en redirigeant vers Gmail.
Et là tout est impeccable.
Deux solutions s'ouvrent à vous :
1) Appliquer les changements comme indiqué ci-dessus.
2) Si comme moi vous avez Thunderbird, faites comme ceci.
Outils -> Options -> Affichage ->Formatage ->Avancé - Encodage des caractères
Mettez UTF-8 aux 2
Edit : Je viens d'essayer dans Thunderbird et ça ne change rien.
Donc une seule méthode fonctionne.
Carton plein pour le_joker_fou.
Bravo et encore un tout tout grand merci pour l'aide.
Générateur de formulaire de contact PHP : http://www.comscripts.com/scripts/php.assistant-formulaire-php.1587.html