Accents formulaire php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Accents formulaire php

Re: Accents formulaire php

par bb64 » 01 oct. 2011, 08:04

Bonjour AB

Non seulement je tiens compte de tes conseils, mais je suis très attentif à chacun de tes mels, je te suis très reconnaissant du temps que tu m'as consacré.

Je suis au niveau zéro en php, j’apprends de jour en jour grâce à ce forum entre autre, je parcours le net à la recherche d'infos ....

Je laisse ma page du formulaire php en ligne dans l'état originel jusqu'à ce que je trouve la solution, j'ai trouvé ce formulaire sur le net.

J'ai essayé en mettant les headers dans le code php, j'ai mis la bonne déclaration d'encodage
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

En résumé, je tiens compte de tout ce que tu me dit, mais l'apprentissage du php est difficile pour moi, question d'age, intellectuelle, compréhension ...

Mais je persévère :D

Encore merci pour tout


J'ai tenu compte de ta remarque concernant le code déprécié en php 5, j'ai un message me disant que je n'ai pas rempli le champs mail....

Bonne journée

Cordialement

BB

Le code de ma page que j'ai essayé d'adapter en tenant compte de tes remarques.

http://www.cambo-locations.net/cambo/t3/iralour/cc.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 (isset($_POST['f_envoyer'])) {
    $email = ($_POST['f_email']) ;
	$message = ($_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(filter_var($email, FILTER_VALIDATE_EMAIL)) echo 'mail valide'; else echo 'mail invalide';
		{
			$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 = "";
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head>
<title>Contact,Iralour</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Description" content="Contact, formulaire Iralour." />
<meta name="Keywords" content="formulaire, contact, Iralour,Clémence Enia, cambo les bains, cambo" />
<link rel="stylesheet" type="text/css" href="../../../principale.css" media="screen" />
<style type="text/css">
#formulaire2 {float:left;width:480px;}
#adresse{float:left;width:330px;margin-left:20px;border: dotted 1px #ccc; padding: 15px;}
.retour {font-style:bold;color:red;margin-top:20px;}
.droite{float:right;border:solid 0px }
.h1loc {margin-bottom: 10px; width:800px;}
</style>
</head>
<body>

<div id="formulaire2">
 <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>
</div> 
</body>
</html>

Re: Accents formulaire php

par AB » 01 oct. 2011, 05:50

Oui bon mais je t'ai donné un exemple pour les hearders qu'il faut envoyer dans ce message avec un lien vers un site qui explique bien l'envoi de mail. Je ne vois aucune trace de ces headers dans ton code, vraiment aucune. Non plus qu'aucune trace de la déclaration de l'encodage que tu utilises alors que l'on t'a déjà donné un lien vers un tuto sur l'utf8 faq-tutoriels/encodage-utf-t245062.html.
Bref on dirait que tu ne tiens aucun compte de ce que l'on te dit, enfin c'est ce que laisse à penser ton code.

Et puis c'est moins grave mais la fonction eregi est dépréciée depuis php 5.3. Pour valider un mail le plus simple est d'utiliser filter_var :
if(filter_var($email, FILTER_VALIDATE_EMAIL)) echo 'mail valide'; else echo 'mail invalide';

Re: Accents formulaire php

par bb64 » 30 sept. 2011, 07:59

Il ne faut pas utiliser htmlentities.
Cette fonction ne sert que pour protéger les données à l'affichage dans la page en cours... Or la tu n'affiche rien, tu envoies un mail.
J'ai supprimé les htmlhentities, maintenant j'ai des petits carrés à la place du é :-(

Re: Accents formulaire php

par AB » 29 sept. 2011, 23:29

Il ne faut pas utiliser htmlentities.
Cette fonction ne sert que pour protéger les données à l'affichage dans la page en cours... Or la tu n'affiche rien, tu envoies un mail.

Re: Accents formulaire php

par bb64 » 29 sept. 2011, 08:05

Bonjour

Ab j'ai isoler le code, je bataille en vain , rien n'y fait :(

J'ai visiter un grand nombre de sujets concernant ce problème ......!

J'ai mis le code isoler sur cette page
http://www.cambo-locations.net/cambo/t3/iralour/bb.php
en supprimant toutes les métas .

Si quelqu'un à une solution ? Ou une autre piste ...?

merci

Bonne journée


Ps: Je remet le code de ma page épurée:
<?
if (isset($_POST['f_envoyer'])) {
    $email = htmlentities($_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 = "";
}
?>

<html><head>
<style type="text/css">
#formulaire2 {float:left;width:480px;}
#adresse{float:left;width:330px;margin-left:20px;border: dotted 1px #ccc; padding: 15px;}
.retour {font-style:bold;color:red;margin-top:20px;}
.droite{float:right;border:solid 0px }
.h1loc {margin-bottom: 10px; width:800px;}
</style>
</head>
<body>

<div id="formulaire2">
 <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>
</div> 
</body>
</html>
BB

Re: Accents formulaire php

par AB » 27 sept. 2011, 17:32

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
Il faut isoler ton problème... Dans une page séparée tu fais fonctionner ta fonction mail puis quand ça marche tu l'intègre dans ta page.
Quand on parle du haut de ta page, c'est le haut de ta page de code, la balise body n'étant que le début de ton html mais pas nécessairement le haut de ta page de code.
Pour éviter les problèmes et avoir une page de code bien structurée on sépare autant que possible le php que l'on met en haut de page, du html que l'on met en dessous :
<?php

//code php ... header ... ta fonction mail et autres fonctions

// fermeture du code php
?>
<html>
<body>

<!--code html-->
<?php echo $mavariable // code php  nécessaire uniquement pour l'affichage ?>
</body>
</html>

Re: Accents formulaire php

par bb64 » 27 sept. 2011, 08:05

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

Re: Accents formulaire php

par AB » 25 sept. 2011, 20:30

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

par bb64 » 25 sept. 2011, 09:00

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

par Mazarini » 23 sept. 2011, 14:28

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

par bb64 » 23 sept. 2011, 14:20

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

par popy » 23 sept. 2011, 11:37

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

par Mazarini » 23 sept. 2011, 10:44

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

par bb64 » 23 sept. 2011, 07:34

"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

par AB » 23 sept. 2011, 01:41

"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).