Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

Bonjour,

 

Tout n00b en html, php, etc que je suis, j'essaie de me faire une petite page web. J'ai donc repiqué des bouts de codes et ai créé un page principale ainsi qu'un page de contact.

La page de contact consiste en un formulaire qui va m'envoyer un mail par le biais d'un fichier php.

J'essaie de faire en sorte que le mail ne parte pas tant que les champs obligatoires du formulaires ne sont pas remplis. Mais ça ne fonctionne pas... :P

 

Voilà la page contact.php qui contient le formulaire:

<!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="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>BaK Computer</title>
<link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />


</head>

<body>

<div id="outer">
<div id="wrapper">
	<div id="head">
		<div id="head-left"></div>
		<div id="head-right"></div>
		<div id="head-1"></div>
		<h1><span class="logo"><span class="top">BaK</span><span class="gadgets">Computer</span></span></h1>
					<div id="navb">
		  <ul>
			  <li><a href="http://homepage.com/ordinateurs/">HOME</a></li>
			  <li><a href="http://homepage.com/ordinateurs/contact.html">CONTACT</a></li>
		  </ul>
		</div>
	</div>
	<div id="body">
		<div id="body-bot">
				<h2><span>Formulaire de <strong>CONTACT</strong></span></h2>
					<div class=clear>
					<form name="formulaire" action="http://homepage.com/ordinateurs/traitement.php" method="post" onSubmit="return verification()">

												  <table cellspacing="15">
												  <br />
													<tr><td class="info">Nom/Prénom* : </td>
													<td class="champ">
														<input name="nom" type="text" size="50" class="writein"></td></tr>
													<tr><td class="info">Lieu* : </td>
													<td class="champ">
														<input name="lieu" type="text" size="50" class="writein"></td></tr>
													<tr><td class="info">Email* : </td>
													<td class="champ">
														<input name="email" type="text" size="50" class="writein"></td></tr>
													<tr><td class="subject">Offre choisie* : </td>
													<td class="liste">
														<input name="offre" type="radio" value="offre_1">#1<br>
														<input name="offre" type="radio" value="offre_3">#3<br>
														<input name="offre" type="radio" value="offre_4">#4</td></tr>
													<tr><td class="contenu">Message : </td>
													<td class="contenant"><textarea name="texte" cols="50" rows="20" class="writein"></textarea></td></tr>
															<div class="nepasvoir">
																 <tr><td class="info"></td>
																 <td class="champ">*Champs <strong>obligatoires</strong></td></tr>
															</div>
													<tr><td class="info"></td>
													<td class="champ"><input type=checkbox value=true name=copy id=copy><label for=copy> Je désire recevoir une copie</label></td></tr>
													<tr id="nepasimprimer">
													<td class="lesboutons">
														<input name="annuler" type="reset" value="Annuler"></td>
													<td>
														<input name="soumettre" type="submit" value="Envoyer"></td>
													</tr>
												  </table>
											</form>

											</div>
				</div>
		</div>
	</div>
</div>
</div>

</body>
</html>

 

et le fichier PHP qui génère le mail:

<?php
echo "<plaintext>";
print_r ($_POST);
$strMessage = "";
$IsAllOkay=false;

if (!isset($_POST['email'])) {
		$adresse_email = "";
			$strMessage = "Email incorrect!\n<BR>";
	} else  {
		$adresse_email = $_POST['email'];

			if (!isset($_POST['nom'])) {
					   $NomPrenom = "";
					   $strMessage = "Nom incorrect\n<BR>";
			   } else  {
				   $NomPrenom = $_POST['nom'];
				   }
				   if (!isset($_POST['lieu'])) {
				$LeLieu = "";
							$strMessage .= "Lieu incorrect";
				   } else {
					  $LeLieu = $_POST['lieu'];
		  $IsAllOkay=true;
		}
	 }
if ($IsAllOkay) {
echo "Merci pour votre commande";
$adresse="email@email.com";
$from="From: $NomPrenom $lieu <$email>\r\n";
$from.="Reply-To: $nom $lieu <$email>\n";
$from.="X-priority:3\n";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/plain"; 

$message="$NomPrenom a manifester son interet pour l'offre $offre\n";
$message.="Lieu  :$texte\n";
$message.="Email  :$email\n";
$message.="Commentaire :$texte";



	//messages de debug
if (mail($adresse,$sujet,$texte,$from)) {
	echo "\nON A ENVOYE LE MAIL SUIVANT ";
	echo "\nTO:$adresse"; 
	echo "\nSUJET : $offre";
	echo "\nMESSAGE : $message";
	echo "\nHEADERS : $from";
} else {
	echo "\n#### PROBLEME D'ENVOI AUTOMATIQUE DE MAIL";
}


} else {
echo "#### Il me manque des infos ####";
echo "voici les erreurs à corriger :";
echo $strMessage;
}

 

Pour l'instant, le mail est envoyé à chaque fois, même si tous les champs sont vides... :P

Me serais-je planté dans mes if...else?

 

:P

Modifié par BaK

Posté(e)

Ooops ma mise en évidence s'est perdue en mode code. Voilà la partie du fichier traitement.php concernée par le test des champs:

if (!isset($_POST['email'])) {
		$adresse_email = "";
			$strMessage = "Email incorrect!\n<BR>";
	} else  {
		$adresse_email = $_POST['email'];

			if (!isset($_POST['nom'])) {
					   $NomPrenom = "";
					   $strMessage = "Nom incorrect\n<BR>";
			   } else  {
				   $NomPrenom = $_POST['nom'];
				   }
				   if (!isset($_POST['lieu'])) {
				$LeLieu = "";
							$strMessage .= "Lieu incorrect";
				   } else {
					  $LeLieu = $_POST['lieu'];
		  $IsAllOkay=true;
		}
	 }

Posté(e) (modifié)

Slt,

 

if (!isset($_POST['email'])) {
		$adresse_email = "";
			$strMessage = "Email incorrect!\n<BR>";
	} else  {
		$adresse_email = $_POST['email'];

 

Normal que ça foire :P, là ton code dit : si je ne vois pas le post mail, la variable $adresse_email est vide. Sinon (autrement dit si je vois le post mail) la variable $adresse_email est égal à ce qui est vu dans le champ mail.

 

Faut lui dire : si je vois le post mail et qu'il est égal à vide => conséquence : un message d'erreur suivi d'un exit... :P

Modifié par Grenouille
Posté(e)

Salut Grenouille,

 

Merci bcp pour ta réponse! :P

 

Entre temps j'a essayé de simplifier mon code au max pour y comprendre qqch, et c'est tout le contraire! :P

 

Voilà le code du formulaire.php

<?php
echo "<plaintext>";
print_r ($_POST);
$NomPrenom = $_POST['nom'];
if (isset($NomPrenom)) {
	 echo "Tout bon\n";
}
else { echo "FAUX\n";
}
?>

 

Supposons que je ne mette rien dans le champ 'nom', voilà ce qui s'affiche:

 

Comme on peut le voir en gras, aucune variable n'est affectée à 'nom'

Pourtant c'est bien le message "Tout bon" qui apparait! :P

 

Si qqun voit où sa cloche...

 

Merci, a+

Posté(e)
Si qqun voit où sa cloche...
Je crois que ton test qui s'appuie sur "_isset()" est foireux parce que tu as bel et bien un membre "nom" dans la variable "_POST", et qu'il n'est pas NULL, donc puisque tu ne testes pas la longueur de _POST["nom"], ça passe dans le bloc qui envoie le mail.

(Faudrait que je relise la doc de isset pour être sûr mais j'ai la flemme ;-))

Posté(e)

Bonjour à tous,

 

Merci pour vos réponses!

 

Voilà ce que j'ai trouvé comme commentaire sur la doc isset:

The behavior of isset is complex and the results are sometimes not what people expected -- to their peril.

After dealing with isset() for awhile and peppering my code with additional checks for edge cases. I eventually got to know and love empty()

Most of the places that you are using isset(), empty() would do a better job.

 

Je vais donc faire quelques tests avec empty et sinon tester la longueur avec strlen

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...