Page 1 sur 1

besoin d'un oeil neuf sur un formulaire d'envoi de mail

Posté : 07 sept. 2006, 23:42
par Melody Nelson
bonjour,

je n'arrive pas à trouver l'erreur (ou les erreurs) dans le formulaire d'envoi de mail dont le code figure ci-après...

le résultat que je souhaite est le suivant :
- tous les champs doivent être remplis pour que l'email soit envoyé
- si certains ne le sont pas, réafficher le formulaire

pour l'instant, que je remplisse ou non tous les champs, ce qui s'affiche correspond à la dernière partie de mon code (le dernier "else")

le formulaire est en ligne ici (attention, site en construction) :
http://www.pajumontreal.org/paju_fr/?/80/

merci d'avance pour votre aide, en espérant que ma demande ne soit pas abusive...

formulaire :

Code : Tout sélectionner

<form action="http://www.pajumontreal.org/paju_fr/?/_contactmessage/" method="post" class="page"> <fieldset> <legend>Vos coordonn&eacute;es</legend> <p> <label for="Nom" class="oblig">* Nom</label> <input type="text" id="Nom" name="nom" size="35" value="" /> </p> <p> <label for="Courriel" class="oblig">* Courriel</label> <input type="text" id="Courriel" name="email" size="35" value="" /> </p> </fieldset> <fieldset> <legend>Votre message</legend> <p> <label for="Votre_message" class="oblig">&nbsp;</label> </p> <textarea id="Votre_message" name="message" cols="40" rows="10"></textarea> </fieldset> <p><input type="submit" name="envoi" value="Envoyer votre message" /></p> </form>
traitement du formulaire :
// vérification du clic sur le bouton submit du formulaire
if (isset($_POST['envoi'])) {


// récupération des valeurs du formulaire
$controle_guillemets = get_magic_quotes_gpc() ;


if ($controle_guillemets == "0") {
	
	// "magic_quotes" n'est pas activé
	// récupération des informations du formulaire et traitement des caractères
	$var_nom = utf8_decode(mysql_real_escape_string($_POST["nom"])) ;
	$var_email = utf8_decode(mysql_real_escape_string($_POST["email"])) ;
	$var_message = utf8_decode(mysql_real_escape_string($_POST["message"])) ;
}

	else {
	
	// "magic_quotes" est activé
	// récupération des informations du formulaire telles quelles
	$var_nom = utf8_decode($_POST["nom"]) ;
	$var_email = utf8_decode($_POST["email"]) ;
	$var_message = utf8_decode($_POST["message"]) ;
	}

// contrôle des champs obligatoires
// s'ils sont vides, réaffiche le formulaire avec les informations déjà saisies

if (empty($var_nom) or empty($var_email) or empty($var_message))

{
	$msg = "<p class=\"alerte\">";
	$msg .= "Pour envoyer votre message, merci de remplir tous les champs du formulaire.";
	$msg .= "</p>\n";
	$msg .= "<form action=\"http://www.pajumontreal.org/paju_fr/?/_contactmessage/\" method=\"post\" class=\"page\">\n";
	$msg .="<fieldset>\n";
	$msg .="<legend>Vos coordonn&eacute;es</legend>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Nom\" class=\"oblig\">* Nom</label>\n";
	$msg .="<input type=\"text\" id=\"Nom\" name=\"nom\" size=\"35\" value=\"".utf8_encode($var_nom)."\" />\n";
	$msg .= "</p>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Courriel\" class=\"oblig\">* Courriel</label>\n";
	$msg .="<input type=\"text\" id=\"Courriel\" name=\"email\" size=\"35\" value=\"".utf8_encode($var_email)."\" />\n";
	$msg .= "</p>\n";
	$msg .= "</fieldset>\n";
	$msg .= "<fieldset>\n";
	$msg .="<legend>Votre message</legend>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Votre_message\" class=\"oblig\">&nbsp;</label>\n";
	$msg .= "</p>\n";
	$msg .= "<textarea id=\"Votre_message\" name=\"message\" cols=\"40\" rows=\"10\">".utf8_encode($var_message)."</textarea>\n";
	$msg .= "<p>\n";
	$msg .= "<input type=\"submit\" name=\"envoi\" value=\"Envoyer votre message\" />\n";
	$msg .= "</p>\n";
	$msg .="</form>\n";
	
	echo ($msg) ;
	}

	// s'ils sont remplis, affichage du message de fin et envoi du mail
	else {
		
		$msg = "<p>Merci d'avoir rempli le formulaire, votre message a &eacute;t&eacute; envoy&eacute;</p>";
		echo ($msg);

		$from_email  = $var_email;
		$entetedate  = date("D, j M Y H:i:s -0400"); // avec offset horaire
		$entetemail  = "From:".$from_email."\n"; // Adresse expéditeur
		$entetemail .= "Cc: \n";
		$entetemail .= "Bcc: \n"; // Copies cachées
		$entetemail .= "Reply-To:" .$from_email."\n"; // Adresse de retour
		$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
		$entetemail .= "Date:".$entetedate; 

		$dest = "[email protected]";
		$objet = "Site PAJU (FR) - Contact";
		$contenu = "Ce message provient du site PAJU (FR).\n\n";
		$contenu .= "[NOM] " .$var_nom ."\n";
		$contenu .= "[COURRIEL] " .$var_email ."\n";
		$contenu .= "[MESSAGE]\n\n" .stripslashes($var_message) ."\n";

		mail ($dest, $objet, $contenu, $entetemail);
		}

}


// contenu affiché si on accède directement à cette page

else {	
	$msg = "<p>";
	$msg .= "Les champs marqu&eacute; d'une * sont obligatoires.";
	$msg .= "</p>\n";
	$msg .= "<form action=\"http://www.pajumontreal.org/paju_fr/?/_contactmessage/\" method=\"post\" class=\"page\">\n";
	$msg .="<fieldset>\n";
	$msg .="<legend>Vos coordonn&eacute;es</legend>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Nom\" class=\"oblig\">* Nom</label>\n";
	$msg .="<input type=\"text\" id=\"Nom\" name=\"nom\" size=\"35\" value=\"\" />\n";
	$msg .= "</p>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Courriel\" class=\"oblig\">* Courriel</label>\n";
	$msg .="<input type=\"text\" id=\"Courriel\" name=\"email\" size=\"35\" value=\"\" />\n";
	$msg .= "</p>\n";
	$msg .= "</fieldset>\n";
	$msg .= "<fieldset>\n";
	$msg .="<legend>Votre message</legend>\n";
	$msg .= "<p>\n";
	$msg .="<label for=\"Votre_message\" class=\"oblig\">&nbsp;</label>\n";
	$msg .= "</p>\n";
	$msg .= "<textarea id=\"Votre_message\" name=\"message\" cols=\"40\" rows=\"10\"></textarea>\n";
	$msg .= "<p>\n";
	$msg .= "<input type=\"submit\" name=\"envoi\" value=\"Envoyer votre message\" />\n";
	$msg .= "</p>\n";
	$msg .="</form>\n";
	echo ($msg) ;
}

Posté : 08 sept. 2006, 00:07
par Shrell
Tu as choisi la dtd STRICT, belle performance ma foi ;)
cependant je ne la connais pas trop, à vrai dire elle me décourage, mon coté rebelle surement :lol:
Au risque de dire des bêtises, je vais donc te dire ce qui me passe par la tête :
- Ta balise form n'a pas d'attribut name
- Ton second fieldset n'est pas refermé
- Un dossier qui s'appelle "?", ca marche ca? J'aurais pas osé :-s

Sinon je ne vois rien de choquant dans le PHP... voilà, en esperant que ca t'aide ;)

Posté : 08 sept. 2006, 00:49
par Melody Nelson
pour le ?, ce n'est pas un dossier mais un élément généré automatiquement dans les urls du CMS que j'utilise...

merci pour les infos relatives au html... j'ai corrigé le fieldset non fermé, pour le "name" du formulaire, j'en ai pas mis car je ne sais pas à quoi ça sert et ça n'empêche pas la page d'être valide XHTML strict...

je pense que ça doit venir du code php mais j'ai beau regarder encore et encore, c'est la panne sèche...

Posté : 08 sept. 2006, 00:57
par Truc
Commence par afficher le contenu des variables $var_nom, $var_email, $var_message avant cette ligne :
if (empty($var_nom) or empty($var_email) or empty($var_message))

Posté : 08 sept. 2006, 01:24
par Melody Nelson
merci de m'avoir mis sur cette piste (oubli de débutante) :D

ça m'a permis de réaliser que les pages du CMS en question fonctionnent avec un système de cache, du coup j'avais à peu près n'importe quoi dans mes variables... je crois que j'ai cerné le problème (j'espère en tout cas)...