Accents illisibles lors de réception de formulaire PHP

Petit nouveau ! | 2 Messages

30 août 2007, 17:17

Hello tous !

Je viens vous enquiquiner avec une question tout bête, mais à laquelle je ne parviens pas à trouver de solution, si tant est qu'il y en ait une.

Grace à un site, j'ai pu générer un formulaire de contact que j'ai mis en ligne.
Au début, les essais que j'ai réalisé étaient tout à fait corrects, puis, en bidouillant légèrement l'apparence, voici que le mail que je reçois depuis mon formulaire ne prend pas en considération les accents.

Ce qui rend évidement pénible la lecture.

Auriez-vous un conseil?

Merci de vos avis.

David

Eléphant du PHP | 291 Messages

30 août 2007, 17:38

C'est du aux problèmes d'encodage (UTF8 / ISO)

Sais-tu quel est l'encodage par défaut de tes fichiers ?
Quel est l'encodage avec lequel les mails sont envoyés ?

Un peu de rigueur dans tout ça, et ça devrait rentrer dans l'ordre ;)
Dans le feu de l'action, tu peux essayer les fonctions suivantes :
utf8_encode($contenu);
ou
utf8_decode($contenu);
A toi d'adapter suivant tes jeux d'encodages !

Petit nouveau ! | 2 Messages

30 août 2007, 18:11

Bonjour, et merci pour cette réponse.

Comme je l'ai dit plus haut, j'ai générer ce formulaire grace à un site (http://www.ge-net.ch/page/index.php?pag ... e=int&id=0) car je n'ai absolument pas les connaissances nécessaire à ceci.

Concernant l'encodage de ma page PHP, voici une capture du 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";

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=strip_tags(trim($f_3));
	$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
	$f_7=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_7)));
	$f_9=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_9)));
	$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 et Prénom &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_3)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Email &raquo; est vide ou incomplet.</span>";
		$errf_3=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
		$f_3)){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
			$errf_3=1;
		}
	}
	if(strlen($f_5)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Ville &raquo; est vide ou incomplet.</span>";
		$errf_5=1;
	}
	if(!$f_14){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Je déclare avoir pris connaissance des conditions générales de Vente et de les avoir acceptées. &raquo; requiert au moins une sélection.</span>";
		$errf_14=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:client\n";
		$corps.="Nom et Prénom : ".$f_1."\n";
		"
		}
		if(mail("[email protected]", $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>";
		}
	}
}
?>
Je l'ai volontairement tronqué car il assez long (beaucoup de questions).

Pourriez-vous me dire où je puis intervenir?

Merci ! :)

up :)