Accents formulaire php

ViPHP
AB
ViPHP | 5818 Messages

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>

Eléphanteau du PHP | 19 Messages

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

ViPHP
AB
ViPHP | 5818 Messages

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.

Eléphanteau du PHP | 19 Messages

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 é :-(

ViPHP
AB
ViPHP | 5818 Messages

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';

Eléphanteau du PHP | 19 Messages

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>