Plop tout le monde !

Je viens à vous car j'ai un soucis, actuellement en stage je m'occupe du site web de mon entreprise mais là ou les problèmes se posent c'est au niveau du formulaire de contact.

Voila monde code formulaire situé dans le fichiers products.php :


<form id="contact" method="post" action="formucontact.php">

	<fieldset><legend>Vos coordonnées</legend></br>

		<label for="nom">Nom : </label></br><input type="text" id="nom" name="nom" tabindex="1" /></br>

        <label for="nom">Pr&eacute;nom : </label></br><input type="text" id="prenom" name="prenom" tabindex="2" /></br>

        <label for="nom">T&eacute;l&eacute;phone : </label></br><input type="text" id="telephone" name="telephone" tabindex="3" /></br>

		<label for="email">Email : </label></br><input type="text" id="email" name="email" tabindex="4" /></br></br>

	</fieldset>

	<fieldset><legend>Votre message :</legend></br>

		<label for="objet">Objet : </label></br><input type="text" id="objet" name="objet" tabindex="5" /></br></br>

		<label for="message">D&eacute;tails de la commande : </label></br><textarea id="details" name="details" tabindex="6" cols="30" rows="8"></textarea></br>

	</fieldset>

	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer" /></div>
</form>


Et le php du formucontact.php :


<?php
	/*
		********************************************************************************************
		CONFIGURATION
		********************************************************************************************
	*/
	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
	$destinataire = 'email@domain.fr';

	// copie ? (envoie une copie au visiteur)
	$copie = 'oui'; // 'oui' ou 'non'

	// 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.";

	// Messages d'erreur du formulaire
	$message_erreur_formulaire = "Vous devez d'abord <a href=\"products.php\">envoyer le formulaire</a>.";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/

	// on teste si le formulaire a été soumis
	if (!isset($_POST['envoi']))
	{
		// formulaire non envoyé
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
		/*
		 * 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'])     : '';
		$prenom     = (isset($_POST['prenom']))     ? Rec($_POST['prenom'])     : '';
		$telephone     = (isset($_POST['telephone']))     ? Rec($_POST['telephone'])     : '';
		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
		$details = (isset($_POST['details'])) ? Rec($_POST['details']) : '';

		// 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é

		if (($nom != '') && ($prenom != '') && ($telephone != '') && ($email != '') && ($objet != '') && ($details != ''))
		{
			// les 4 variables sont remplies, on génère puis 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
			$details = str_replace("&#039;","'",$details);
			$details = str_replace("&#8217;","'",$details);
			$details = str_replace("&quot;",'"',$details);
			$details = str_replace('<br>','',$details);
			$details = str_replace('<br />','',$details);
			$details = str_replace("&lt;","<",$details);
			$details = str_replace("&gt;",">",$details);
			$details = str_replace("&amp;","&",$details);

			// Envoi du mail
			if (mail($cible, $objet, $details, $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="products.php">Retour a la page produits</a></p>'."\n";
		};
	}; // fin du if (!isset($_POST['envoi']))
?>



Et le message d'erreur retourné :
http://img833.imageshack.us/img833/475/pb1ps.jpg

Un screen du formulaire :
http://img13.imageshack.us/img13/2265/pb2kt.jpg

Pour le deuxieme message d'erreur je sais qu'il est normale étant donné que je suis encore en local et n'ai pas de serveur smtp sous la main, mais c'est le premier que je n'arrive pas à interpréter >_<.

Je vous remercis d'avance !

P.S.1: le formulaire de contact est issu du tuto mit à disposition ici
P.S.2: je suis actuellement au taf mais m'en irai aider mes collègues dès que possible ! Smiley smile
Modifié par Zhouzi (22 Sep 2012 - 06:43)
Il ne m'était pas apparut aussi clairement avant ton intervention c'est marrant ça Smiley confused

Merci, du coup pour le moment j'ai fait sauté cette fonction (j'ai bien essayé de remplacer par la nouvelle version mais j'y reviendrai plus tard).
Merci pour le complément d'info Smiley langue

A quoi fais tu allusion exactement boulaneige ?

Dans ma nouvelle version j'ai fait sauté la fonction qui vérifiait le format de l'e-mail ainsi que les variables qui y faisait appel, la seule erreur qui m'est retourné est celle concernant le serveur SMTP ^o)
Je parle de la partie HTML du formulaire.

Tes labels ont des attributs for mais pour certains la valeur est erronée : la valeur de l'attribut for doit être égale à la valeur de l'attribut id du champ qui lui est associé.

Edit : il y a des erreurs pour "Prénom", "Téléphone" et "Détails de la commande"
Modifié par boulaneige (05 Jul 2011 - 14:33)