Générateur de formulaire et problème d'accent ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par oliver70, 17 Octobre 2009.

  1. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Bonjour,

    J'utilise ce générateur de formulaire qui est gratuit et facile quand on ne sait pas programmer :roll: :

    http://www.ge-net.ch/page/rw-wfco-owb-0.html

    donc dans ma page crée, j'obtiens ceci (code plus bas) mais le problème c'est que tous les messages reçuent comportes des erreurs quand on utilise les lettres avec des accent (grave, aigu...etc...).

    Que faut il modifier ou rajouter à ce code pour éviter cela ?

    Merci si une personne connait la solution ou alors peut être un autre générateur de formulaire GRATUIT :idea:

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <?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_8']=array("Sélectionnez","OUI","NON");
    $list['f_13']=array("Sélectionnez","OUI","NON");
    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(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_4)));
    	$f_5=trim(eregi_replace("[^0-9\ +]", "", $f_5));
    	$f_6=trim(eregi_replace("[^0-9\ +]", "", $f_6));
    	$f_7=strip_tags(trim($f_7));
    	$f_9=strip_tags(trim($f_9));
    	$f_11=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_11)));
    	$f_12=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_12)));
    	// Verification des champs
    	if(strlen($f_1)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom de l'entreprise &raquo; est vide ou incomplet.</span>";
    		$errf_1=1;
    	}
    	if(strlen($f_2)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse complète de l'entreprise &raquo; est vide ou incomplet.</span>";
    		$errf_2=1;
    	}
    	if(strlen($f_3)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre numéro de département &raquo; est vide ou incomplet.</span>";
    		$errf_3=1;
    	}
    	if(strlen($f_4)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Numéro de SIRET &raquo; est vide ou incomplet.</span>";
    		$errf_4=1;
    	}
    	if(strlen($f_5)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.</span>";
    		$errf_5=1;
    	}
    	if(strlen($f_7)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse e-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; Voulez vous que votre adresse mail apparaisse ? &raquo; n'a pas été défini.</span>";
    		$errf_8=1;
    	}
    	if(strlen($f_10)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre présentation &raquo; est vide ou incomplet.</span>";
    		$errf_10=1;
    	}
    	if(strlen($f_11)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Citer les départements ou vous vous déplacez &raquo; est vide ou incomplet.</span>";
    		$errf_11=1;
    	}
    	if(strlen($f_12)<2){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre nom de membre sur le forum est &raquo; est vide ou incomplet.</span>";
    		$errf_12=1;
    	}
    	if($f_13==0){
    		$erreur.="<li><span class='txterror'>Le champ &laquo; Voulez vous que votre nom de membre soit indiqué ? &raquo; n'a pas été défini.</span>";
    		$errf_13=1;
    	}
    	if($erreur==""){
    		// Création du message
    		$titre="Message de votre site";
    		$tete="From:Site@Allo-olivier.com\n";
    		$corps.="Nom de l'entreprise : ".$f_1."\n";
    		$corps.="Adresse complète de l'entreprise : ".$f_2."\n";
    		$corps.="Votre numéro de département : ".$f_3."\n";
    		$corps.="Numéro de SIRET : ".$f_4."\n";
    		$corps.="Téléphone : ".$f_5."\n";
    		$corps.="Mobile : ".$f_6."\n";
    		$corps.="Adresse e-mail : ".$f_7."\n";
    		$corps.="Voulez vous que votre adresse mail apparaisse ? : ".$list['f_8'][$f_8]."\n";
    		$corps.="Site web : ".$f_9."\n";
    		$corps.="Votre présentation : ".$f_10."\n";
    		$corps.="Citer les départements ou vous vous déplacez : ".$f_11."\n";
    		$corps.="Votre nom de membre sur le forum est : ".$f_12."\n";
    		$corps.="Voulez vous que votre nom de membre soit indiqué ? : ".$list['f_13'][$f_13]."\n";
    		$corps.="Parcs, arbres, arboretum ou curiositées de votre Province : ".$f_14."\n";
    		if(mail("allolivier2b@orange.fr", $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>";
    		}
    	}
    }
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Contacte annuaire France</title>
    <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>
    </head>
    
    <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 de l'entreprise* :</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='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Adresse complète de l'entreprise* :</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='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Votre numéro de département* :</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='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Numéro de SIRET* :</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='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Téléphone* :</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='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Mobile :</span></td><td><input type='text' style='width:200 <?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' value='<?echo stripslashes($f_6);?>' size='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Adresse e-mail* :</span></td><td><input type='text' style='width:200 <?if($errf_7==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_7' value='<?echo stripslashes($f_7);?>' size='30' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Voulez vous que votre adresse mail apparaisse ?* :</span></td><td><select style='width:200 <?if($errf_8==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_8' size='1'>
    <? for($id=0;$id<count($list['f_8']);$id++){
    if($id==$f_8){$ct="selected";}
    print("<option ".$ct." value=".$id.">".$list['f_8'][$id]."</option>");
    unset($ct);
    }?>
    </select></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Site web :</span></td><td><input type='text' style='width:200 <?if($errf_9==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_9' value='<?if($submit){echo stripslashes($f_9);}else{print("http://");}?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Votre présentation* :</span></td><td><textarea style='width:360 <?if($errf_10==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_10' rows='7' cols='40'><?echo$f_10?></textarea></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Citer les départements ou vous vous déplacez* :</span></td><td><input type='text' style='width:200 <?if($errf_11==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_11' value='<?echo stripslashes($f_11);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Votre nom de membre sur le forum est* :</span></td><td><input type='text' style='width:200 <?if($errf_12==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_12' value='<?echo stripslashes($f_12);?>' size='24' border='0'></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Voulez vous que votre nom de membre soit indiqué ?* :</span></td><td><select style='width:200 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' size='1'>
    <? for($id=0;$id<count($list['f_13']);$id++){
    if($id==$f_13){$ct="selected";}
    print("<option ".$ct." value=".$id.">".$list['f_13'][$id]."</option>");
    unset($ct);
    }?>
    </select></td></tr>
    <tr><td align='right' width='30%'><span class='txtform'>Parcs, arbres, arboretum ou curiositées de votre Province :</span></td><td><textarea style='width:360 <?if($errf_14==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_14' rows='6' cols='40'><?echo$f_14?></textarea></td></tr>
    <tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
    </table>
    </form>
    <? } ?>
    </body>
    </html>
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Moi je dirais (un peu au pif, vraiment pas testé):

    Code:
    $tete.="Content-Type: text/plain; charset=UTF-8\n";
    
    Juste après la ligne $tete="From:...

    Jacques.
     
  3. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Bonjour jcaron,

    Donc petit changement après avoir ajouter la ligne de code :

    avant pour les é j'avais é à la place et maintenant j'ai un petit carré :wink:

    merci de ton aide si tu trouves le problème

    A + Olivier
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    C'est bizarre ça. Le fait que tu recevais é montre bien que c'était de l'UTF-8 qui n'était pas reconnu comme tel, maintenant avec le header ajouté ça devrait être reconnu et ça devrait marcher tout seul. Tu utilises quoi pour lire ton mail?

    Jacques.
     
  5. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Resalut,

    J'ai essayé avec Outlook, Incredimail et même sur mon mobile android, ce formulaire envoie les messages avec des problèmes avec les é...

    Tous les autres mails que j'ai, arrivent sans problème a pars ceux de ce formulaire.

    :idea:

    olivier
     
  6. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Je viens de tester une copie de ton script et ça marche nickel. Donc je ne vois que ça comme options:
    - il y a un réglage bizarre de ton php qui essaie de modifier l'encodage des données reçues dans les formulaires
    - idem au niveau php ou de ton serveur de mail pour les mails envoyés

    Ceci dit ça me paraît quand même particulièrement étrange, parce que sans le Content-Type tu recevais des é qui est le codage UTF-8 d'un é quand on l'interprète comme de l'ISO-88591-1, et ça ne devrait pas avoir changé (on ne fait que dire que le codage est UTF-8, donc il devrait comprendre é au lieu de é).

    L'hypothèse comme quoi il y aurait double encodage UTF-8 ne me paraît pas plausible non plus (le content-type n'y changerait rien), donc je sèche un peu. Il y a un truc qui me chifonne dans les regex de nettoyage (il y a une liste d'accents particulièrement réduite, et je ne sais pas si php gère correctement les regex avec des accents avec des données en UTF-8?), mais vu que ça passait avant je ne comprends pas pourquoi ça ne passerait plus maintenant.

    Fais une copie de ton formulaire qui me l'envoie à mon e-mail (jc@ledomainedemonwww), et envoie-moi un formulaire avec des accents, j'aurai le mail "brut", ça me permettra peut-être de t'en dire plus.

    Jacques.

    EDIT: typo
     
  7. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Merci à toi, je viens de t'envoyé tous cela

    bon dimanche

    olivier
     
  8. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Ah oui mais non, pas un forward. Fais une copie du formulaire sur ton serveur, mets mon adresse comme destinataire dans cette copie, et envoie-moi un formulaire avec des accents à travers cette copie. Je veux pouvoir voir brut, à l'octet près, ce que ton serveur envoie...

    Jacques.
     
  9. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Rebonjour,

    Excuse moi :oops: donc je viens juste de créer un formulaire avec ton adresse mail et je viens de t'envoyer un exemple que tu devrait recevoir :


    Olivier
     
  10. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Là tu l'as envoyé avec la version "originale" du script sans ma modif. Tu peux remettre la modif suggérée et me renvoyer un formulaire?

    Jacques.
     
  11. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Oups

    C'est fait

    2 de suite pour être sur
     
  12. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Ben chez moi ça arrive impeccable avec les accents et tout!

    Le mystère s'épaissit...

    Jacques.
     
  13. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Salut,

    Cela arrive bien afficher avec les 3 formulaires envoyé ? Je n'y comprend rien maintenant (en faite pas plus qu'avant :roll: )

    Cela peut il venir de mon hébergeur. Car j'ai un amis qui a un site chez le même hébergeur et qui utilise le même générateur et qui reçoit aussi les messages avec des erreurs sur les é ????

    Olivier
     
  14. oliver70
    oliver70 WRInaute occasionnel
    Inscrit:
    2 Mai 2006
    Messages:
    263
    J'aime reçus:
    0
    Je viens de faire un essai en lisant le mail du formulaire non pas directement sur mon pc mais en passant par gmail et là le formulaire fonctionne parfaitement sans aucune faute sur les é ou autres lettres avec accent.

    Donc cela ne vient pas du formulaire en lui même.

    Je ne comprends rien :?: :mrgreen:
     
  15. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Si on veut être pointilleux, le mail devrait être encodé en base64 ou en quoted-printable avant d'être envoyé. Mais je ne crois pas que les clients mail soient si pointilleux que ça, donc je ne sais pas vraiment pourquoi ça ne passerait pas une fois que le Content-Type y est (avec le charset).

    Donc, avec le Content-Type, avec quel(s) client(s) mail ça passe, et avec le(s)quel(s) ça ne passe pas, en définitive?

    Jacques.
     
  16. dztcid
    dztcid Nouveau WRInaute
    Inscrit:
    14 Mars 2005
    Messages:
    18
    J'aime reçus:
    0
    bonjour olivier,

    essaye la fonction PHP utf_decode, ou utf_encode dans le script php qui envoie ton mail

    dans ton script tu as la variable $corps
    tu mets un truc du genre entre les deux ligne de traitement des variables

    $tete.="Content-Type: text/plain; charset=iso-8859-1\n";

    $corps.="Parcs, arbres, arboretum ou curiositées de votre Province : ".$f_14."\n";
    rajoute ca $corps = utf_decode($corps);
    if(mail("allolivier2b@orange.fr", $titre, stripslashes($corps), $tete)){


    un conseil masque ton email il est dans le script que tu as recopiez

    a+
     
  17. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 974
    J'aime reçus:
    121
    C'est utf8_decode, pas utf_decode.
     
  18. dztcid
    dztcid Nouveau WRInaute
    Inscrit:
    14 Mars 2005
    Messages:
    18
    J'aime reçus:
    0
    bonjour,

    autant pour moi, j'ai oublié de mettre le 8
     
Chargement...
Similar Threads - Générateur problème accent Forum Date
Problème d'analyse des résultats générateur de mots clés adwords Débuter en référencement 19 Octobre 2010
générateur de mot-clé ADwords mis à jour : problème d'infos AdWords 20 Janvier 2008
[Résolu] Problème sitemap generateur Crawl et indexation Google, sitemaps 21 Juin 2005
Quels sont les meilleurs générateurs de mots-clés ? Débuter en référencement 21 Septembre 2021
Générateur de backlinks Référencement Google 25 Juillet 2021
générateur de mot clé par image Débuter en référencement 5 Avril 2020
générateur de mot clé Débuter en référencement 30 Mars 2020
Avoir le générateur de mots clés détaillés AdWords 4 Octobre 2016
Site creé avec un generateur de code, bon ou pas bon ? Développement d'un site Web ou d'une appli mobile 17 Juin 2015
Cherche générateur sitemap rapide +200K pages Crawl et indexation Google, sitemaps 29 Mai 2015
SEO - Générateur de mots clés Débuter en référencement 27 Décembre 2014
Générateurs de codes EAN bidons ? e-commerce 22 Décembre 2014
Générateur de graphiques WYSIWYG (Jquery ou autre?) Développement d'un site Web ou d'une appli mobile 27 Septembre 2014
Générateur de mots clés, payant ? AdWords 19 Avril 2014
l'outil de générateur de mots clés a rendu l'âme !!! Référencement Google 27 Août 2013
Fiabilité = 0 du générateur de mots clés ?! AdWords 4 Juillet 2013
Générateur de newsletter Développement d'un site Web ou d'une appli mobile 7 Mars 2013
Relation entre positionnement et générateur mot clé Problèmes de référencement spécifiques à vos sites 23 Février 2013
Generateur de .htaccess dans le dossier à protéger Développement d'un site Web ou d'une appli mobile 29 Novembre 2012
Calcul du pourcentage de concurrence dans le générateur de KW AdWords 4 Septembre 2012