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

oliver70

WRInaute occasionnel
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>
 

jcaron

WRInaute accro
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.
 

oliver70

WRInaute occasionnel
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
 

jcaron

WRInaute accro
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.
 

oliver70

WRInaute occasionnel
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
 

jcaron

WRInaute accro
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
 

jcaron

WRInaute accro
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.
 

oliver70

WRInaute occasionnel
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
 

jcaron

WRInaute accro
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.
 

oliver70

WRInaute occasionnel
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
 

oliver70

WRInaute occasionnel
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:
 

jcaron

WRInaute accro
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.
 

dztcid

Nouveau WRInaute
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+
 

Discussions similaires

Haut