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
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 é à è 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
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