Probleme avec formulaire de contact

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 : Probleme avec formulaire de contact

par Tiko » 12 mai 2008, 07:45

Pour tes pb de caractères essaies peut-être de changer le charset.

Sinon pour que ce topic soit complet j'ai rajouté les quatre lignes de code pour que le visiteur ait le choix de s'envoyer une copie du mail ou non avec une case à cocher:
<?php
    $destinataire = "xxxxx@xxxxx";
    // copie ? 
    $copie = false;
	$err_formulaire = true;
	$reponse = NULL;

    // Messages de confirmation du mail 
    $message_envoye = "Votre message a bien été envoyé !";
    $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

    // Message d'erreur du formulaire
    $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


//Cette fonction sert à vérifier la syntaxe d'un email
function IsEmail($email)
{
	$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
	return (eregi($pattern,$email)) ? true : false;
};

//protection du header
function Protege_header($value) {

$value = str_replace("\n", "", str_replace("\r", "", $value));
return $value;

}

// cette fonction sert à nettoyer et enregistrer un texte
function Rec($text)
{
	$text = trim($text); // delete white spaces after & before text
	
	// magic quotes ?
	if(get_magic_quotes_gpc())$text = stripslashes($text);
	
	return $text;
};


// on récupère tous les champs.
$nom     = (isset($_POST['nom']))     ? Rec(Protege_header($_POST['nom']))     : '';
$email   = (isset($_POST['email']))   ? Rec(Protege_header($_POST['email']))   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';	
if(isset($_POST['copie'][0]) && $_POST['copie'][0] == 1) $copie = true;

    
if (isset($_POST['envoi']))
{
	$err_formulaire = false; //pour ne pas réafficher le formulaire si envoi du mail

	// On va vérifier les variables et l'email ...
	// soit l'email est vide si erroné, soit il vaut l'email entré
	if(!IsEmail($email)) {$email = ''; $err_formulaire = true;}

	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
	{
	
	// les 4 variables sont remplies, on génère puis on envoie le mail
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
		$headers .= 'From: '.$nom.' <'.$email.'>' . "\r\n";

		// envoyer une copie au visiteur ?
		if ($copie)
		{
			$cible = $destinataire.','.$email;
		}
		else
		{
			$cible = $destinataire;
		};

		// Envoi du mail
		if (mail($cible, $objet, $message, $headers))
		{
			$reponse = $message_envoye;
		}
		else
		{
			$reponse = $message_non_envoye;
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		$reponse = $message_formulaire_invalide;
		$err_formulaire = true; // sert pour remplir le formulaire en cas d'erreur si besoin
	};
}; // fin du if (!isset($_POST['envoi']))
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>

<?php
	if (isset($reponse)) 
		{?>
		<p style="font-family:Arial, Helvetica, sans-serif; font-size:14px; font-weight:bold"><?php echo $reponse;?></p>
		<?php }
		
    if ($err_formulaire)
		{?>        
		<form style="font-family:verdana,geneva;" id="contact" method="post" action="">
		<fieldset style="background-color:#eeeeee">
		<legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Vos coordonne&eacute;s :</legend>
		<p>
		<label for="nom">Nom & pr&eacute;nom:</label>
		<input type="text" id="nom" name="nom" value="<?php echo htmlentities($nom)?>" tabindex="1" />
		</p>
		<p>
		<label for="email">Adresse  email :</label>
		<input type="text" id="email" name="email" value="<?php echo htmlentities($email)?>" tabindex="2" />
		</p><br/>
		</fieldset>
		<fieldset style="background-color:#eeeeee"><legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Votre message :</legend>
		<p>
		<label for="objet">Objet :</label>
		<input type="text" id="objet" name="objet" value="<?php echo htmlentities($objet)?>" tabindex="3" />
		</p>
		<p>
		<label for="message">Texte :</label>
		<textarea id="message" name="message" tabindex="4" cols="50" rows="8"><?php echo htmlentities($message)?></textarea>
		</p>
		<p>
		<input id = "copie" name="copie" type="checkbox" <?php if($copie) echo  'checked="checked"'?> value="1" />
		<label id = "label_check" for="copie" style="font-size:14px;">Cochez pour recevoir une copie</label>
		</p>
		<br />
		</fieldset>
		<div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div>
		</form>
		<?php } ?> 
</body>
</html>
EDIT : ce dernier script contient également une protection pour le header (permet d'éviter que votre formulaire ne serve à envoyer des mail à d'autres personnes qu'au destinataire).

1) modification pour le charset: ok (sinon, on remplace les "é" par &eacute;)

2) confirmation d'envoi: ok

3) vu mes erreurs et mes oublis.

Encore merci infiniment pour ton aide et ta disponibilité.
Super ce forum (dans mes marques-pages ;-) ).

Tiko

par AB » 12 mai 2008, 01:23

Pour tes pb de caractères essaies peut-être de changer le charset.

Sinon pour que ce topic soit complet j'ai rajouté les quatre lignes de code pour que le visiteur ait le choix de s'envoyer une copie du mail ou non avec une case à cocher:
<?php
    $destinataire = "xxxxx@xxxxx";
    // copie ? 
    $copie = false;
	$err_formulaire = true;
	$reponse = NULL;

    // Messages de confirmation du mail 
    $message_envoye = "Votre message a bien été envoyé !";
    $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

    // Message d'erreur du formulaire
    $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


//Cette fonction sert à vérifier la syntaxe d'un email
function IsEmail($email)
{
	$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
	return (eregi($pattern,$email)) ? true : false;
};

//protection du header
function Protege_header($value) {

$value = str_replace("\n", "", str_replace("\r", "", $value));
return $value;

}

// cette fonction sert à nettoyer et enregistrer un texte
function Rec($text)
{
	$text = trim($text); // delete white spaces after & before text
	
	// magic quotes ?
	if(get_magic_quotes_gpc())$text = stripslashes($text);
	
	return $text;
};


// on récupère tous les champs.
$nom     = (isset($_POST['nom']))     ? Rec(Protege_header($_POST['nom']))     : '';
$email   = (isset($_POST['email']))   ? Rec(Protege_header($_POST['email']))   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';	
if(isset($_POST['copie'][0]) && $_POST['copie'][0] == 1) $copie = true;

    
if (isset($_POST['envoi']))
{
	$err_formulaire = false; //pour ne pas réafficher le formulaire si envoi du mail

	// On va vérifier les variables et l'email ...
	// soit l'email est vide si erroné, soit il vaut l'email entré
	if(!IsEmail($email)) {$email = ''; $err_formulaire = true;}

	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
	{
	
	// les 4 variables sont remplies, on génère puis on envoie le mail
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
		$headers .= 'From: '.$nom.' <'.$email.'>' . "\r\n";

		// envoyer une copie au visiteur ?
		if ($copie)
		{
			$cible = $destinataire.','.$email;
		}
		else
		{
			$cible = $destinataire;
		};

		// Envoi du mail
		if (mail($cible, $objet, $message, $headers))
		{
			$reponse = $message_envoye;
		}
		else
		{
			$reponse = $message_non_envoye;
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		$reponse = $message_formulaire_invalide;
		$err_formulaire = true; // sert pour remplir le formulaire en cas d'erreur si besoin
	};
}; // fin du if (!isset($_POST['envoi']))
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>

<?php
	if (isset($reponse)) 
		{?>
		<p style="font-family:Arial, Helvetica, sans-serif; font-size:14px; font-weight:bold"><?php echo $reponse;?></p>
		<?php }
		
    if ($err_formulaire)
		{?>        
		<form style="font-family:verdana,geneva;" id="contact" method="post" action="">
		<fieldset style="background-color:#eeeeee">
		<legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Vos coordonne&eacute;s :</legend>
		<p>
		<label for="nom">Nom & pr&eacute;nom:</label>
		<input type="text" id="nom" name="nom" value="<?php echo htmlentities($nom)?>" tabindex="1" />
		</p>
		<p>
		<label for="email">Adresse  email :</label>
		<input type="text" id="email" name="email" value="<?php echo htmlentities($email)?>" tabindex="2" />
		</p><br/>
		</fieldset>
		<fieldset style="background-color:#eeeeee"><legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Votre message :</legend>
		<p>
		<label for="objet">Objet :</label>
		<input type="text" id="objet" name="objet" value="<?php echo htmlentities($objet)?>" tabindex="3" />
		</p>
		<p>
		<label for="message">Texte :</label>
		<textarea id="message" name="message" tabindex="4" cols="50" rows="8"><?php echo htmlentities($message)?></textarea>
		</p>
		<p>
		<input id = "copie" name="copie" type="checkbox" <?php if($copie) echo  'checked="checked"'?> value="1" />
		<label id = "label_check" for="copie" style="font-size:14px;">Cochez pour recevoir une copie</label>
		</p>
		<br />
		</fieldset>
		<div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div>
		</form>
		<?php } ?> 
</body>
</html>
EDIT : ce dernier script contient également une protection pour le header (permet d'éviter que votre formulaire ne serve à envoyer des mail à d'autres personnes qu'au destinataire).

par Tiko » 11 mai 2008, 21:56

C'est quoi le pb exactement ?

Sinon si c'est résolu penses à cliquer sur résolu.

Et puis quand tu auras un peu de temps essaies de mettre une case à cocher dans ton formulaire qui permettra ou non à l'envoyeur de recevoir une copie s'il le désire. C'est presque prêt dans le code php :wink:
C'est ça mon probleme de codage :

Image

J'édite mon post avec RESOLU en te remerciant de nouveau.

Tiko

ps: sympa l'idée de la case a cocher, merci du tuyau. :wink:

par AB » 11 mai 2008, 19:53

Il faut que je revoie le codage car le message qui indique la réussite de l'envoi du formulaire n'est pas affiche correctement. Sinon, RAS c'est simplement parfait.
C'est quoi le pb exactement ?

Sinon si c'est résolu penses à cliquer sur résolu.

Et puis quand tu auras un peu de temps essaies de mettre une case à cocher dans ton formulaire qui permettra ou non à l'envoyeur de recevoir une copie s'il le désire. C'est presque prêt dans le code php :wink:

par Tiko » 11 mai 2008, 19:39

Tiko = boulet de l'annee !!!

:oops:


Test réussi avec succès !!!

Il faut que je revoie le codage car le message qui indique la réussite de l'envoi du formulaire n'est pas affiche correctement. Sinon, RAS c'est simplement parfait.

J'ai noté tes remarques sur les erreurs faites. La prochaine fois, je ferai tout en une seule fois plutôt que de faire par étapes.

par AB » 11 mai 2008, 19:38

Pour l'adresse mail, je vais essayer de la coder avec ca http://aspirine.org/emailcode.php pour éviter que ces robots de malheur ne fasse leur sale boulot !
Ne code rien du tout. L'adresse email du destinataire est incopiable par les robots puisqu'elle est dans le code php et ne s'affiche jamais.

Le problème précédent est que tu l'avais affichée en clair dans un forum.

EDIT Et si ça fonctionne pense à cliquer sur "Résolu"

par Tiko » 11 mai 2008, 19:33

Je regarde d'abord ta correction et reviens si j'ai des questions.
Je fais un test après pour te dire ce qu'il en est au juste.

En tout cas, chapeau et merci pour ta disponibilité

par AB » 11 mai 2008, 19:27

Ce code bloc parce que y'a des fautes disséminées un peu partout...

- $body_top n'est pas définie avant d'être concaténée, et de plus cette variable n'est pas utilisée par la suite ?

- $err_formulaire n'est pas définie avant d'être utilisée dans la condition if (($err_formulaire) || (!isset($_POST['envoi'])))

- on fait des stripslashes pour l'affichage des messages alors que cela a déjà été effectué dans la fonction Rec

- Les messages sont formatés avec htmlspecialchars avant l'envoi du mail donc problème avec certains caractères.

- Les variables $nom, $email, $objet, $message étaient affichées sans être définies.

- $message reprenait la valeur de $_POST['texte'] qui n'existe pas à la place de $_POST['message']


C'était pour les erreurs php (dont je me souviens) qui faisaient que ce script n'a jamais pu fonctionner. Mais j'ai néanmoins gardé l'esprit du script tout en faisant pas mal de modifications pour qu'il fonctionne. Supprimer aussi le remplacement de certains caractères (pourquoi faire?)

Y'avait aussi pas mal d'erreurs html (mais qui ne gênaient pas le fonctionnement)

Si on sépare le php du html et en reprenant le fonctionnement du code original on peut faire ça :
<?php
    $destinataire = "XXXXX@XXXt";
    // copie ? 
    $copie = "oui";
	$err_formulaire = true;
	$reponse = NULL;

    // Messages de confirmation du mail 
    $message_envoye = "Votre message a bien été envoyé !";
    $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

    // Message d'erreur du formulaire
    $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


//Cette fonction sert à vérifier la syntaxe d'un email
function IsEmail($email)
{
	$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
	return (eregi($pattern,$email)) ? true : false;
};


// cette fonction sert à nettoyer et enregistrer un texte
function Rec($text)
{
	$text = trim($text); // delete white spaces after & before text
	
	// magic quotes ?
	if(get_magic_quotes_gpc())$text = stripslashes($text);
	
	return $text;
};


// on récupère tous les champs.
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';	

    
if (isset($_POST['envoi']))
{
	$err_formulaire = false; //pour ne pas réafficher le formulaire si envoi du mail

	// On va vérifier les variables et l'email ...
	// soit l'email est vide si erroné, soit il vaut l'email entré
	if(!IsEmail($email)) {$email = ''; $err_formulaire = true;}

	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
	{
	// les 4 variables sont remplies, on génère puis on envoie le mail
		$headers = "MIME-Version: 1.0\r\n";
		$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
		$headers .= 'From: '.$nom.' <'.$email.'>' . "\r\n";

		// envoyer une copie au visiteur ?
		if ($copie == 'oui')
		{
			$cible = $destinataire.','.$email;
		}
		else
		{
			$cible = $destinataire;
		};

		// Envoi du mail
		if (mail($cible, $objet, $message, $headers))
		{
			$reponse = $message_envoye;
		}
		else
		{
			$reponse = $message_non_envoye;
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		$reponse = $message_formulaire_invalide;
		$err_formulaire = true; // sert pour remplir le formulaire en cas d'erreur si besoin
	};
}; // fin du if (!isset($_POST['envoi']))
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>

<?php
	if (isset($reponse)) 
		{?>
		<p style="font-family:Arial, Helvetica, sans-serif; font-size:14px; font-weight:bold"><?php echo $reponse;?></p>
		<?php }
		
    if ($err_formulaire)
		{?>        
		<form style="font-family:verdana,geneva;" id="contact" method="post" action="">
		<fieldset style="background-color:#eeeeee">
		<legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Vos coordonne&eacute;s :</legend>
		<p>
		<label for="nom">Nom & pr&eacute;nom:</label>
		<input type="text" id="nom" name="nom" value="<?php echo htmlentities($nom)?>" tabindex="1" />
		</p>
		<p>
		<label for="email">Adresse  email :</label>
		<input type="text" id="email" name="email" value="<?php echo htmlentities($email)?>" tabindex="2" />
		</p><br/>
		</fieldset>
		<fieldset style="background-color:#eeeeee"><legend style="color:#CC6600;font-family:verdana,geneva;font-size:18px; font-weight:bold">Votre message :</legend>
		<p>
		<label for="objet">Objet :</label>
		<input type="text" id="objet" name="objet" value="<?php echo htmlentities($objet)?>" tabindex="3" />
		</p>
		<p>
		<label for="message">Texte :</label>
		<textarea id="message" name="message" tabindex="4" cols="50" rows="8"><?php echo htmlentities($message)?></textarea>
		</p>
		<br />
		</fieldset>
		<div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div>
		</form>
		<?php } ?> 
</body>
</html>

par Tiko » 09 mai 2008, 19:36

Je n'ai pas le temps de regarder ça maintenant.

A part ça si ce n'est pas une adresse mail factice qui se trouve dans ton code, dépêches toi de la modifier avant que des robots spammeurs ne la répertorie.

Si personne ne te répond d'ici là, je pourrai le faire dimanche.
Rien ne presse, je t'assure. C'est déjà super sympa de ta part de m'aider.

Pour l'adresse mail, je vais essayer de la coder avec ca http://aspirine.org/emailcode.php pour éviter que ces robots de malheur ne fasse leur sale boulot !

Bon week-end !!

par AB » 09 mai 2008, 19:18

Je n'ai pas le temps de regarder ça maintenant.

A part ça si ce n'est pas une adresse mail factice qui se trouve dans ton code, dépêches toi de la modifier avant que des robots spammeurs ne la répertorie.

Si personne ne te répond d'ici là, je pourrai le faire dimanche.

par Tiko » 09 mai 2008, 06:53

Salut,

J'ai rajoute cette ligne (charset utf-8) car j'ai des soucis d'affichage sur les accentuations. Google est mon ami et je constate que le cas est récurant.

Je vais déjà essayer de comprendre ou ce code bloque grâce a vous.
<?php
	$destinataire = "[email protected]";
	// copie ? 
	$copie = "oui";
$body_top .= "Content-type: text/plain; charset=utf-8"; 
	// Messages de confirmation du mail 
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

	// Message d'erreur du formulaire
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	
	if (isset($_POST['envoi']))
	{
		$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

		/*
		 * cette fonction sert à nettoyer et enregistrer un texte
		 */
		function Rec($text)
		{
			$text = trim($text); // delete white spaces after & before text
			if (1 === get_magic_quotes_gpc())
			{
				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
			}
			else
			{
				$stripslashes = create_function('$txt', 'return $txt;');
			}

			// magic quotes ?
			$text = $stripslashes($text);
			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
			$text = nl2br($text);
			return $text;
		};

		/*
		 * Cette fonction sert à vérifier la syntaxe d'un email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
		$message = (isset($_POST['texte'])) ? Rec($_POST['texte']) : '';

		// On va vérifier les variables et l'email ...
		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
		$err_formulaire = (IsEmail($email)) ? false : true;

		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis on envoie le mail
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = str_replace("'","'",$message);
			$message = str_replace("’","'",$message);
			$message = str_replace(""",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&","&",$message);

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
			$err_formulaire = true;
		};
	}; // fin du if (!isset($_POST['envoi']))

	if (($err_formulaire) || (!isset($_POST['envoi'])))
	{
		// afficher le formulaire		
		echo '<font face="verdana,geneva" style="color: #CC6600">'."\n";
		echo '<form id="contact" method="post" action="?">'."\n";
		echo '	<fieldset style="background-color:#eeeeee"><legend><strong><font face="Verdana" size="4">Vos 

coordonne&eacute;s :</legend></font></strong>'."\n";
		echo '		<p>'."\n";
		echo '<font face="verdana,geneva" style="color: #000000">'."\n";
		echo '			<label for="nom">Nom & pr&eacute;nom:</label>'."\n";
		echo '			<input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" 

/>'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="email">Adresse  email :</label>'."\n";
		echo '			<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" 

/>'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

		echo '<font face="verdana,geneva" style="color: #CC6600">'."\n";
		echo '	<fieldset style="background-color:#eeeeee"><legend><strong><font face="Verdana" size="4">Votre message 

:</legend></font></strong>'."\n";
		echo '		<p>'."\n";
		echo '<font face="verdana,geneva" style="color: #000000">'."\n";
		echo '			<label for="objet">Objet :</label>'."\n";
		echo '			<input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" 

/>'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="message">Texte :</label>'."\n";
		echo '			<textarea id="message" name="message" tabindex="4" cols="50" 

rows="8">'.stripslashes($message).'</textarea>'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";
		echo '		</p>'."\n";

		echo '	<div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div>'."\n";
		echo '</form>'."\n";
	};
?>

A te lire,

Tiko

par AB » 09 mai 2008, 00:04

Soit il en manque soit y'a des erreurs dans ce code.

Déjà à cette ligne
$body_top .= "Content-type: text/plain; charset=utf-8";
$body_top n'existe pas encore et on souhaite la concaténer...

Peux tu donner la totalité de ton code en une seule fois.

par Tiko » 08 mai 2008, 23:49

voila voila tout le reste :
<?php
	$destinataire = "[email protected]";
	// copie ? 
	$copie = "oui";
 $body_top .= "Content-type: text/plain; charset=utf-8";
	// Messages de confirmation du mail 
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

	// Message d'erreur du formulaire
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	
	if (isset($_POST['envoi']))
	{
		$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

		/*
		 * cette fonction sert à nettoyer et enregistrer un texte
		 */
		function Rec($text)
		{
			$text = trim($text); // delete white spaces after & before text
			if (1 === get_magic_quotes_gpc())
			{
				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
			}
			else
			{
				$stripslashes = create_function('$txt', 'return $txt;');
			}

			// magic quotes ?
			$text = $stripslashes($text);
			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
			$text = nl2br($text);
			return $text;
		};

		/*
		 * Cette fonction sert à vérifier la syntaxe d'un email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
		$message = (isset($_POST['texte'])) ? Rec($_POST['texte']) : '';

		// On va vérifier les variables et l'email ...
		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
		$err_formulaire = (IsEmail($email)) ? false : true;

		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis on envoie le mail
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = str_replace("'","'",$message);
			$message = str_replace("’","'",$message);
			$message = str_replace(""",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&","&",$message);

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
			$err_formulaire = true;
		};
	}; // fin du if (!isset($_POST['envoi']))

	if (($err_formulaire) || (!isset($_POST['envoi'])))
	{

par AB » 08 mai 2008, 23:47

Ben alors montre nous le code qui récupère les données du formulaire et qui envoie le mail.

par Tiko » 08 mai 2008, 23:45

j'ai tout dans le même code :

le formulaire et l'envoi des infos saisies par mail.