Bonjour,

J'ai intégrer un formulaire de contact à mon site internet en utilisant le générateur de code via ce site :
http://www.ge-net.ch/page/rw-wfco-owb-0.html

La bonne nouvelle, c'est que cela fonctionne, seul problème, la réception des messages sur ma boîte mail transforme toutes les lettres avec accents par des ??

J'ai vu sur certains post la nécessité de changer le UTF-8 mais rien n'y fait.
Avez-vous une petite idée de la raison de cet incident ?
Merci d'avance

Pour info, voici le code généré :

Avant la balise <html> :
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_6']=array("Sélectionnez","Choix 1"," Choix 2"," Choix 3"," Choix 4"," Choix 5"," ");
if(isset($_POST['submit'])){
$erreur="";
// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
$f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
// Verification des champs
if(strlen($f_1)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; NOM &raquo; est vide ou incomplet.</span>";
$errf_1=1;
}
if(strlen($f_2)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
$errf_2=1;
}
if(strlen($f_3)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse &raquo; est vide ou incomplet.</span>";
$errf_3=1;
}
if(strlen($f_4)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
$errf_4=1;
}
if(strlen($f_5)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Ville commune &raquo; est vide ou incomplet.</span>";
$errf_5=1;
}
if($f_6==0){
$erreur.="<li><span class='txterror'>Le champ &laquo; Type &raquo; n'a pas été défini.</span>";
$errf_6=1;
}
if(strlen($f_7)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
$errf_7=1;
}
if($erreur==""){
// Création du message
$titre="Message de votre site";
$tete="From:Site@Monsite.com\n";
$corps.="NOM : ".$f_1."\n";
$corps.="Prénom : ".$f_2."\n";
$corps.="Adresse : ".$f_3."\n";
$corps.="Code postal : ".$f_4."\n";
$corps.="Ville commune : ".$f_5."\n";
$corps.="Type : ".$list['f_6'][$f_6]."\n";
$corps.="Message : ".$f_7."\n";
if(mail("mon@mail.com", $titre, stripslashes($corps), $tete)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?>

Entre les balises <head> et </head>
<style type="text/css" media="screen"><!--
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>

Entre les balises <body> et </body>
<? if($ok_mail=="true"){ ?>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>NOM* :</span></td><td><input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Prénom* :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Adresse* :</span></td><td><input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Code postal* :</span></td><td><input type='text' style='width:200 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?echo stripslashes($f_4);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Ville commune* :</span></td><td><input type='text' style='width:200 <?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_5' value='<?echo stripslashes($f_5);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Type* :</span></td><td><select style='width:200 <?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' size='1'>
<? for($id=0;$id<count($list['f_6']);$id++){
if($id==$f_6){$ct="selected";}
print("<option ".$ct." value=".$id.">".$list['f_6'][$id]."</option>");
unset($ct);
}?>
</select></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Message* :</span></td><td><textarea style='width:360 <?if($errf_7==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_7' rows='6' cols='40'><?echo$f_7?></textarea></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?>
Bonjour,
1) le HTML qui contient le FORM de saisie, doit avoir un DOCTYPE de html5 ce sera plus facile donc au minimum

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


Le PHP qui va envoyer le mail (et donc récupérer les données POST) doit avoir au minimun:

<?PHP
 header('Content-Type: text/html; charset=utf-8');
?>

Et être sauvegardé en UTF8 sans Bom
Modifié par Christele (17 Oct 2017 - 01:14)
Bonjour,

J'ai suivi vos conseils, cependant, après avoir ajouté les éléments indiqués, je reçois toujours les lettres avec accents par des ??....

Une autre idée du problème ?
Dans ton Editeur de texte, il faut vérifier si l'Encodage que tu utilise est bon.
Par exemple dans Notepad++
clic sur Encodage -> Codage des caractères ->Langues d'Europe occidentale. et tu choisis l'encodage
Bonjour,

Je précise que je suis un 'amateur' en terme de création de site !!!! Enfin, vous l'aviez certainement compris ;o)

Lorsque j'ajoutes cette ligne "$header('Content-Type: text/html; charset=utf-8');"

Ma page web m'affiche : "Fatal error: Function name must be a string in /homepages/18/d536574719/htdocs/contact.php on line 2"

Faut-il placé ce code a un endroit précis, je l'ai positionné juste après la balise <?php

Merci de votre aide.
D'où vient le $ ? Et il faut le positionner en début de page, oui.

D'autre part cela concerne l'encodage de la page elle même, pas l'encodage du mail. Voir mon lien plus haut.
Re-bonjour,

Suis navré, mais je pige absolument rien !!!
Je me permets de coller mon code ci-dessous :

<?php
header('Content-Type: text/html; charset=utf-8');
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_8']=array("Sélectionnez","choix1","choix2","choix3","choix4","choix5","choix6","choix7","choix8","Autre");
if(isset($_POST['submit'])){
$erreur="";
// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
$f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
$f_6=trim(eregi_replace("[^0-9\ +]", "", $f_6));
$f_7=strip_tags(trim($f_7));
// Verification des champs
if(strlen($f_1)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; NOM : &raquo; est vide ou incomplet.</span>";
$errf_1=1;
}
if(strlen($f_2)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Prénom : &raquo; est vide ou incomplet.</span>";
$errf_2=1;
}
if(strlen($f_3)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse : &raquo; est vide ou incomplet.</span>";
$errf_3=1;
}
if(strlen($f_4)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Code Postal : &raquo; est vide ou incomplet.</span>";
$errf_4=1;
}
if(strlen($f_5)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Ville - Commune : &raquo; est vide ou incomplet.</span>";
$errf_5=1;
}
if(strlen($f_6)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone : &raquo; est vide ou incomplet.</span>";
$errf_6=1;
}
if(strlen($f_7)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Mail : &raquo; est vide ou incomplet.</span>";
$errf_7=1;
}else{
if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
$f_7)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_7=1;
}
}
if($f_8==0){
$erreur.="<li><span class='txterror'>Le champ &laquo; Type de travaux : &raquo; n'a pas été défini.</span>";
$errf_8=1;
}
if(strlen($f_9)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Message : &raquo; est vide ou incomplet.</span>";
$errf_9=1;
}
if($erreur==""){
// Création du message
$titre="CONTACT";
$header="From:CONTACT@monsite.com/contact.php\n";
$corps.="NOM : ".$f_1."\n";
$corps.="Prénom : ".$f_2."\n";
$corps.="Adresse : ".$f_3."\n";
$corps.="Code Postal : ".$f_4."\n";
$corps.="Ville - Commune : ".$f_5."\n";
$corps.="Téléphone : ".$f_6."\n";
$corps.="Mail : ".$f_7."\n";
$corps.="Choix : ".$list['f_8'][$f_8]."\n";
$corps.="Message : ".$f_9."\n";
if(mail("monmail@monmail.fr", $titre, stripslashes($corps), $header)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?>


Je précise que j'ai inséré mon code php au dessus de mon html
Pouvez-vous m'indiquer d'où vient l'erreur ?

Merci d'avance
J'ai copié collé ton code et aucune erreur perso. Tu es certain de ne pas avoir de cache qui te joue des tours ?
Non, j'ai toujours le même problème.
J'ai changé l'intitulé du titre pour voir s'il prenait bien en compte mes modifications et c'est bien le cas !!!! mais j'ais toujours des ??? au lieu de ééé.

J'ai mis l'encodage en UTF-8 sans BOM. Le problème peut-il venir de ma messagerie ?? j'utilise le mail orange.
Modifié par Freemuse (18 Oct 2017 - 16:49)
Il faudrait s'exprimer clairement, "ça ne marche pas" ne veut rien dire et cela devient un peu lassant :

- erreur php ou pas ? Fatal error: Function name must be a string est corrigé ? A priori oui mais tu ne le dis pas clairement
- concernant l'encodage du mail je t'ai mis un lien plus haut, je le répète pour la 2ème fois et c'est la dernière. Après si vous ne savez pas ou ne voulez pas lire c'est un autre problème Smiley rolleyes
Bonsoir,

Alors le message "Fatal error: Function name must be a string" n'apparaît plus.
Ma page "contact" fonctionne correctement, pas de message d'erreur.

Ce qui cloche, c'est la réception du message dans ma boîte mail, je reçois bien le message mais toutes les lettres avec un accent sont transformé par un '?'

J'ai tenté de suivre https://stackoverflow.com/a/7267251 mais c'est un peu du chinois pour moi.

Par rapport au code généré par le créateur de formulaire que j'ai utilisé dont le code se trouve dans mon 1er post. J'ai transformé les $tete par des $header et ajouter :
header('Content-Type: text/html; charset=utf-8');
en seconde ligne juste après <?php

Je comprends que je puisse être agaçant avec mes questions qui doivent vous paraître 'idiotes' mais ce n'est pas de la mauvaise volonté, c'est juste que je n'y connais absolument rien !!!

Bonne soirée et encore merci de votre aide