Page 1 sur 2

Accents formulaire php

Posté : 20 sept. 2011, 11:03
par bb64
Bonjour

Petit nouveau sur ce forum je viens vers vous pour apprendre et me perfectionner en php.
Je bataille depuis des semaines en vain sur un problème concernant un formulaire php ou les accents sont remplaçés par des symboles.

Ma page php essai "http://www.cambo-locations.net/cambo/t3/iralour/bb.php" contient la balise
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Le code php du formulaire ci-dessous et un marqueur Xiti
Encodage des caractères du navigateur / unicode (UTF-8)

Merci de vos conseils, pistes à suivre afin de régler ce soucis.
<?
if (isset($_POST['f_envoyer'])) {
    $email = trim($_POST['f_email']);
	$message = htmlentities($_POST['f_message']);
	$erreur_email = 0;
	$erreur_message = 0;
	$retour = "";
	$destinataire = "[email protected]";
	$sujet = "Location T3";
	$merci = "Merci.";
	if ($email == "") {
		$retour .= "Entrez votre adresse email.";
		$erreur_email = 1;
	} else {
		if (! eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$email)) {
			$retour .= "L'adresse email n'est pas correcte.";
			$erreur_email = 1;
		}
	}
	if ($message == "") {
		$retour .= "Vous avez oublie votre message.";
		$erreur_message = 1;
	}
	if ($retour =="") {
		$contenu .= $email."\n";
		$contenu .= $message;
		mail($destinataire,$sujet,$contenu,"FROM:[email protected]");
		$retour = $merci;
		$email = "";
		$message = "";
	} 
} else {
	$email = "";
	$message = "";
}
?>


  <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulaire">
<p><span <? if ($erreur_email == 1){echo "class='erreur'";} ?>>Votre  email : </span></p>
<div><input name="f_email" type="text" id="f_email" size="40" maxlength="40"  value = "<? echo $email ?>" />
</div>
<p><span <? if ($erreur_message == 1){echo "class='erreur'";} ?>><br />
Votre message : </span></p>
<div>
  <textarea name="f_message" cols="55" rows="5" id="f_message" ><? echo $message ?></textarea>
</div>
<div><br />
<input type="submit" name="f_envoyer" value="Envoyer" />
</div>   
</form>
<p class='retour'> <? echo $retour; ?> </p> </div> <div id="adresse"> 

Re: Accents formulaire php

Posté : 20 sept. 2011, 11:20
par moogli
Salut,

C'est dans le mail le soucis ?

A tu regardé ceci faq-tutoriels/encodage-utf-t245062.html ?

@+

Re: Accents formulaire php

Posté : 20 sept. 2011, 12:22
par bb64
Merci pout ton aide :D
Oui le soucis est dans le mail, j'ai régardé la page que tu m'as envoyé, j'ai essayé avec .htaccess , pas de changements ...!

Re: Accents formulaire php

Posté : 22 sept. 2011, 08:22
par bb64
Bonjour
Je fais remonter ce post, j'ai essayé de nombreuses choses, rien n'y fait, j'ai toujours ces caractères à la place des lettres accentuées.....

J'ai bien sur lu en long et en travers la page que m'a conseillé de lire Moogli
.htaccess
essayer plusieurs encodage, je suis en UTF-8
Contacter mon hébergeur pour savoir si il fallait intervenir au niveau du serveur, du fichier php.ini ou autre.... Pas de réponse

Je ne sais plus quoi faire :-(

Si vous avez des pistes ???

Merci
Bonne journée

Re: Accents formulaire php

Posté : 22 sept. 2011, 11:21
par moogli
c'est bien le contenu du message qui a des problèmes d'accents ? (quand tu le lit avec ton butineur mail ?

si oui à tu essayé d'indiquer le charset dans l’entête ?

il y a un exemple dans la documentation de la fonction mail de php :)

montre nous le code que tu a testé et le résultat que cela donne.

@+

Re: Accents formulaire php

Posté : 22 sept. 2011, 22:21
par bb64
c'est bien le contenu du message qui a des problèmes d'accents ? (quand tu le lit avec ton butineur mail ?

si oui à tu essayé d'indiquer le charset dans l’entête ?

il y a un exemple dans la documentation de la fonction mail de php :)

montre nous le code que tu a testé et le résultat que cela donne.

@+
Merci de ta réponse Moogli


Oui c'est bien le contenu qui à un problème d'accents.
J'ai mis une balise " <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />" dans la page du formulaire, "charset dans l’entête " ...???
Résultat du message &Atilde;&copy; &Atilde;&nbsp; &Atilde;&uml; pour é à è

Merci

Bonne soirée

Code testé
?

if (isset($_POST['f_envoyer'])) {
    $email = trim($_POST['f_email']);
	$message = htmlentities($_POST['f_message']);
	$erreur_email = 0;
	$erreur_message = 0;
	$retour = "";
	$destinataire = "[email protected]";
	$sujet = "Location T3";
	$merci = "Merci.";
	if ($email == "") {
		$retour .= "Entrez votre adresse email.";
		$erreur_email = 1;
	} else {
		if (! eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$email)) {
			$retour .= "L'adresse email n'est pas correcte.";
			$erreur_email = 1;
		}
	}
	if ($message == "") {
		$retour .= "Vous avez oublie votre message.";
		$erreur_message = 1;
	}
	if ($retour =="") {
		$contenu .= $email."\n";
		$contenu .= $message;
		mail($destinataire,$sujet,$contenu,"FROM:[email protected]");
		$retour = $merci;
		$email = "";
		$message = "";
	} 
} else {
	$email = "";
	$message = "";
}
?>


  <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulaire">
<p><span <? if ($erreur_email == 1){echo "class='erreur'";} ?>>Votre  email : </span></p>
<div><input name="f_email" type="text" id="f_email" size="40" maxlength="40"  value = "<? echo $email ?>" />
</div>
<p><span <? if ($erreur_message == 1){echo "class='erreur'";} ?>><br />
Votre message : </span></p>
<div>
  <textarea name="f_message" cols="55" rows="5" id="f_message" ><? echo $message ?></textarea>
</div>
<div><br />
<input type="submit" name="f_envoyer" value="Envoyer" />
</div>   
</form>
<p class='retour'> <? echo $retour; ?>



"

Re: Accents formulaire php

Posté : 23 sept. 2011, 01:41
par AB
"charset dans l’entête " ...???
Cela veut dire :
header('Content-Type: text/html; charset=UTF-8');
tout en haut de ton code php.

(je viens de modifier le tuto sur l'utf-8 pour que cela soit plus clair).

Re: Accents formulaire php

Posté : 23 sept. 2011, 07:34
par bb64
"charset dans l’entête " ...???
Cela veut dire :
header('Content-Type: text/html; charset=UTF-8');
tout en haut de ton code php.

(je viens de modifier le tuto sur l'utf-8 pour que cela soit plus clair).

Merci

Je viens d'ajouter cette ligne de code, surement au mauvais endroit car j'ai un message d'erreur

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/www/cambo/t3/iralour/essai.php:6) in /htdocs/public/www/cambo/t3/iralour/essai.php on line 37
J'ai mis ce code au début
<?
header('Content-Type: text/html; charset=UTF-8');

if (isset($_POST['f_envoyer'])) {
    $email = trim($_POST['f_email']);
	$message = htmlentities($_POST['f_message']);
	$erreur_email = 0;
	$erreur_message = 0;
	$retour = "";

Bonne journée


BB

Re: Accents formulaire php

Posté : 23 sept. 2011, 10:44
par Mazarini
Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/www/cambo/t3/iralour/essai.php:6) in /htdocs/public/www/cambo/t3/iralour/essai.php on line 37
Il ne faut pas envoyer de texte au navigateur avant de lui envoyer des header (comme indiqué dans le message).
Voir essai.php ligne 37 pour trouver l'envoi de caractères (comme indiqué dans le message).

Re: Accents formulaire php

Posté : 23 sept. 2011, 11:37
par popy
Le problème est dans le mail, c'est donc dans les entetes du mail qu'il faut préciser qu'il est en utf-8

Re: Accents formulaire php

Posté : 23 sept. 2011, 14:20
par bb64
Le problème est dans le mail, c'est donc dans les entetes du mail qu'il faut préciser qu'il est en utf-8
Bonjour

Merci a Mazarini et Popy

Pour le header j'ai si bien compris il faut que je le place en début de page juste aprés le <body> ...!

Pour les en-têtes du mail il faut préciser qu'il est en utf-8, mais la je bloque, à quel endroit du code le préciser et comment ??????

Merci

Bonne aprés midi

BB

Re: Accents formulaire php

Posté : 23 sept. 2011, 14:28
par Mazarini
Un petit effort pour l'utilisation de la fonction mail :
http://fr.php.net/manual/fr/book.mail.php

A mon avis, remplacer nContent-Type par n\Content-Type dans l'exemple.

Re: Accents formulaire php

Posté : 25 sept. 2011, 09:00
par bb64
Bonjour

Je n'ai pas su résoudre mon problème, trop juste en php, merci à toutes les personnes qui m'ont aidées, je vais persévérer

Bon dimanche

BB

Re: Accents formulaire php

Posté : 25 sept. 2011, 20:30
par AB
Un autre lien que je trouve plus clair pour les débutants.

Donc à la place de
<?php
     $headers ='From: "nom"<[email protected]>'."\n";
     $headers .='Reply-To: [email protected]'."\n";
     $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';

     if(mail('[email protected]', 'Sujet', 'Message de test', $headers))
     {
          echo 'Le message a bien été envoyé';
     }
     else
     {
          echo 'Le message n\'a pu être envoyé';
     }
?> 
...pour utiliser l'utf-8 dans les mail il suffit d'écrire :
<?php
     $headers ='From: "nom"<[email protected]>'."\n";
     $headers .='Reply-To: [email protected]'."\n";
     $headers .='Content-Type: text/plain; charset="utf-8"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';

     if(mail('[email protected]', 'Sujet', 'Message de test', $headers))
     {
          echo 'Le message a bien été envoyé';
     }
     else
     {
          echo 'Le message n\'a pu être envoyé';
     }
?> 

Re: Accents formulaire php

Posté : 27 sept. 2011, 08:05
par bb64
Bonjour

Merci AB

J' ai essayé d'adapter mon formulaire avec les éléments que tu m'as communiqué à travers la page web qui en effet me parle mieux que celles visitées précédement, c'est plus simple :D

Mais le problème perdure, j'ai essayé d'autres scripts formulaire php en vain, le problème est le même.

Bonne journée

BB