Page 1 sur 2

Probleme avec formulaire de contact

Posté : 08 mai 2008, 22:39
par Tiko
Bonjour,

Ceci est mon 1er post, alors merci pour votre indulgence.

J'ai un code pour un formulaire de contact que j'insère dans un site Joomla (1.5.0) via un module Jumi.
Seulement, ce formulaire n'envoie rien du tout (j'ai teste avec mon adresse mail perso) mais il ne fonctionne pas correctement au niveau des instructions.

J'aimerai une explication sur les erreurs de ce code et apprendre a l'améliorer (colorier les fonds, par exemple).

Merci d'avance de votre aide et de votre patience surtout !

// afficher le formulaire		
		echo '<font face="verdana,geneva" style="color: #CC6600">'."\n";
		echo '<form id="contact" method="post" action="?">'."\n";
		echo '	<fieldset><legend>Vos coordonnees :</legend>'."\n";
		echo '		<p>'."\n";
		echo '<font face="verdana,geneva" style="color: #000000">'."\n";
		echo '			<label for="nom">Nom & prenom:</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><legend>Votre message :</legend>'."\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 '	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer" /></div>'."\n";
		echo '</form>'."\n";
	};
Cordialement,
Tiko

Posté : 08 mai 2008, 23:01
par AB
Es-tu sûr que le formulaire n'envoie rien ou alors est-ce le script qui récupère le formulaire de contact qui ne fait pas correctement son travail ?

Pour voir ce que renvoie le formulaire tu peux faire
if(isset($_POST)) {echo '<pre>';print_r($_POST);echo '</pre>';}

Posté : 08 mai 2008, 23:06
par Tiko
Es-tu sûr que le formulaire n'envoie rien ou alors est-ce le script qui récupère le formulaire de contact qui ne fait pas correctement son travail ?

Pour voir ce que renvoie le formulaire tu peux faire
if(isset($_POST)) {echo '<pre>';print_r($_POST);echo '</pre>';}
Merci pour ta reponse. Mais parle moi doucement et en francais stp :wink:

je colle ce code ou stp ? A quel endroit (parce que je n'ai poste qu'une partie du formulaire de contact) ?

Posté : 08 mai 2008, 23:08
par AB
tu peux mettre ça tout en haut de ton code php par exemple et faudra le supprimer quand ton pb sera réglé

Posté : 08 mai 2008, 23:13
par AB
Je viens de tester ton code, il fonctionne chez moi. Le problème doit venir d'ailleurs.

Posté : 08 mai 2008, 23:17
par Tiko
1) je viens de tester ta ligne supplémentaire. Cela génère a l'écran sur la page un
Array
(
)
plutot disgracieux

Le test de l'envoi de mail est toujours négatif (pas de message de confirmation que le message est bien parti et pas de mail a l'arrivée).

A te lire,

Tiko

Posté : 08 mai 2008, 23:20
par AB
Peut-être n'a tu pas vu mon précédent message :
Je viens de tester ton code, il fonctionne chez moi. Le problème doit venir d'ailleurs.
Tu peux enlever cette ligne c'était juste pour vérifier.

Posté : 08 mai 2008, 23:22
par Tiko
ça fonctionne alors que tu n'as pas la totalité du code ???????????

euh, tu habites Mars ?
Je veux que ca marche aussi sur la Terre !

:wink:

que dois-je vérifier chez mon hebergeur (1and1) pour que ça fonctionne ?

Posté : 08 mai 2008, 23:27
par AB
Ce qui fonctionne c'est le formulaire que tu as donné. Quand on clique sur le bouton "envoyer" il envoie bien les données rentrées. Donc le pb est ailleurs (comme je le disais dans la première ligne de mon premier post).

Posté : 08 mai 2008, 23:31
par Tiko
Que dois-je vérifier du cote de chez mon hebergeur (1and1) pour que ça fonctionne correctement ?

Posté : 08 mai 2008, 23:42
par AB
Peu probable que le pb vienne de ton hébergeur quoique ça dépend de ce qu'utilise le script de ton module.

Au pire comme tu as déjà le formulaire, il ne te reste pas grand chose à coder pour l'envoi de ton mail et donc tu pourrais te passer du module.

Sinon, c'est la relation entre ton module et ta page de formulaire qui doit poser problème.

Posté : 08 mai 2008, 23:45
par Tiko
j'ai tout dans le même code :

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

Posté : 08 mai 2008, 23:47
par AB
Ben alors montre nous le code qui récupère les données du formulaire et qui envoie le mail.

Posté : 08 mai 2008, 23:49
par Tiko
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'])))
	{

Posté : 09 mai 2008, 00:04
par AB
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.