Probleme erreur formulaire mais envoi validé

Eléphanteau du PHP | 43 Messages

29 oct. 2011, 20:08

Bonjour à tous,

J'ai un soucis un formulaire. Si quelqu'un fait ne rentre pas son nom et fait "valider" je recois quand meme le mail.
Si je ne mets pas mon email, j'ai remarqué que le message apparait, mais du coup, je ne recois pas le formulaire ^^.

Voici ma page php :

<?php
     // Une fois le formulaire envoyé
     if(isset($_POST["button"]))
     {
          
          // Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["nom"]))
          {
               $message = "Votre nom doit comporter entre 4 et 20 caractères<br />\n";
               $message .= "L'utilisation de l'underscore est autorisée";
          }
          elseif(!preg_match("/^[A-Za-z0-9]{4,}$/", $_POST["prenom"]))
          {
               $message = "Votre prénom doit comporter entre 4 et 20 caractères";
          }
            elseif(!preg_match("/^[0-9]{4,}$/", $_POST["telephone"]))
          {
               $message = "Votre numéro de téléphone n'est pas renseigné";
          }
		    elseif(!preg_match("/^[A-Za-z0-9]{4,}$/", $_POST["ville"]))
          {
               $message = "Votre ville n'est pas renseignée";
          }
          elseif(!preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$/",
$_POST["email"]))
          {
               $message = "Votre adresse e-mail n'est pas valide";
          }

          else
          {
	          
                                   // Message de confirmation
                                   $message = "Merci beaucoup<br />\n";
                                   $message .= "Un email vient de vous être envoyer afin de l'activer";
                                   
                                   // On masque le formulaire
                                   $masquer_formulaire = true;
                                   
                              }
							  }
 
 
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

           <title>DBA</title>

<link rel="stylesheet" media="all" type="text/css" href="css/style.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />

</head>


<body>
<div id="formulaire_devis"> 
<?php if(isset($message)) { ?>
<p><?php echo $message; ?></p>
<?php } if($masquer_formulaire != true) { ?>

	<form id="form" action="formulaire_devis.php" method="post" class="devis_miseenforme">
		<fieldset class="Dev_block" id="vous">
			<legend>A Remplir</legend>
        
        	<fieldset class="Dev_Inline" id="vos_coordonnees">
			<legend>Vos Coordonnées</legend>
                <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap001">
				<label id="Dev_Label001" for="Dev_elem001">Nom</label>
				<input class="Dev_elem" type="text" name="nom" value="" id="Dev_elem001"/>
				<span class="Dev_Required">*</span>
 				</p>
                <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap002">
				<label id="Dev_Label002" for="Dev_elem002">Prénom</label>
				<input class="Dev_elem" type="text" name="prenom" value="" id="Dev_elem002"/>
				<span class="Dev_Required">*</span>
   			  </p>
              <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap003">
				<label id="Dev_Label003" for="Dev_elem003">Téléphone</label>
				<input class="Dev_elem" type="text" name="telephone" value="" id="Dev_elem003"/>
				<span class="Dev_Required">*</span>
   			  </p>
              <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap004">
				<label id="Dev_Label004" for="Dev_elem004">E-Mail</label>
				<input class="Dev_elem" type="text" name="email" value="" id="Dev_elem004"/>
				<span class="Dev_Required">*</span>
   			  </p>
            </fieldset>
	            
            <fieldset class="Dev_Inline" id="vos_coordonnees">
			<legend>Votre Adresse</legend>
                <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap005">
				<label id="Dev_Label005" for="Dev_elem005">Societe</label>
				<input class="Dev_elem" type="text" name="societe" value="" id="Dev_elem005"/>
     			</p>
                <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap006">
				<label id="Dev_Label006" for="Dev_elem006">Adresse</label>
				<input class="Dev_elem" type="text" name="adresse" value="" id="Dev_elem006"/>
   			  </p>
                <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap007">
				<label id="Dev_Label007" for="Dev_elem007">Code Postal</label>
				<input class="Dev_elem" type="text" name="codepostal" value="" id="Dev_elem007"/>
   			  </p>
              <p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap008">
				<label id="Dev_Label008" for="Dev_elem008">Ville</label>
				<input class="Dev_elem" type="text" name="ville" value="" id="Dev_elem008"/>
				<span class="Dev_Required">*</span>
   			  </p>
        	</fieldset>
			<span class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap001">
     	  <label id="Dev_lab01" for="Dev_for01">Comment avez-vous connu la DBA PROD ?</label>
     	  <select class="Dev_elem" name="Dev_nm_connu[]" id="Dev_elem01">
     	    <option selected="selected" value="">-- Faites votre choix --</option>
     	    <option value="moteur_de_recherche">Par un moteur de recherche</option>
     	    <option value="annuaire_internet">Par un annuaire sur internet</option>
     	    <option value="pages_jaunes">Par les pages jaunes</option>
     	    <option value="bouche-_a_oreille">Bouche &agrave; oreille</option>
     	    <option value="salon">Un salon</option>
     	    <option value="article_de_presse">Article de presse</option>
     	    <option value="autre">Autre</option>
   	      </select>
          </span>
   	  </p>
   
		  <fieldset class="Dev_Inline" id="type_de_projet">
			<legend>Type de Projet</legend>
	
				<input type="checkbox" name="film_de_mariage"/><label>Film de mariage</label>
				<br/>
				<input type="checkbox" name="film_institutionnel"/><label>Film institutionnel</label>
				<br/>
				<input type="checkbox" name="film_clubbing"/><label>Film Clubbing</label>
				<br/>
				<input type="checkbox" name="conversion_duplication"/><label>Conversion/Duplication</label>
				<br/>
				<input type="checkbox" name="crea_site"/><label>Création de site internet</label>
				<br/>
				<input type="checkbox" name="court_metrage"/><label>Court métrage</label>
				<br/>
				<input type="checkbox" name="autre"/><label>Autre</label>
     			</p>
		</fieldset>
     			<p>
        <fieldset class="Dev_Inline" id="echeance">
				<legend>Echéance</legend>
				<p>
				<input type="checkbox" name=">1mois"/><label>-1 mois</label>
				<br/>
				<input type="checkbox" name="> 2mois"/><label>> 2 mois</label>
				<br/>
				<input type="checkbox" name="> 3mois"/><label>> 3mois</label>
				<br/>
				<input type="checkbox" name="> 5mois"/><label>> 6 mois</label>
				<br/>
				<input type="checkbox" name="non_planifie"/><label>non planifié</label>
  				</p>
          </fieldset>
     			
			<fieldset class="Dev_Inline" id="budget">
			<legend>Budget</legend>
				
				<input type="checkbox" name="0_500euros"/><label>0 - 500 euros</label>
				<br/>
				<input type="checkbox" name="500_1000euros"/><label>500 - 1000 euros</label>
				<br/>
				<input type="checkbox" name="1000_1500euros"/><label>1000 - 1500 euros</label>
				<br/>
				<input type="checkbox" name="1500_2000euros"/><label>1500 - 2000 euros</label>
				<br/>
				<input type="checkbox" name="5000_10000euros"/><label>5000 - 10000 euros</label>
				<br/>
				<input type="checkbox" name="peu_importe"/><label>Peu importe</label>
            </fieldset>
             
     			<p>
                
			<fieldset class="Dev_Inline" id="description">
			<legend>Description</legend>
				<p class="Dev_ElemWrap Dev_LabelLeft" id="Dev_ElemWrap357">
				<textarea class="Dev_elem" style="width:99%;height:150px;" name="description" id="Dev_elem357"></textarea>
   			</p>
            </fieldset>
   		  </fieldset>
     		<p>
     		<input type="submit" name="button" id="button" value="Valider" />
     		</p>
     
		</fieldset>
	</form>
    <?php } ?>
</div>

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

<div id="footer_formulaire"> 
<div class="copyright">
		<a href="connexion.php">Espace Membres</a> | <font color="#c71d36">DBA PRODUCTION FILMS © 2011</font> | <a href="mention_legales.html">Mentions Légales</a>
    </div>
</div>

</body>
</html>


La page formulaire_devis.php :
<?php 

$TO = "[email protected]"; 
$subject = "Demande de devis DBA-PROD.COM"; 
$h = "From: " . $TO; 
$message = "Formulaire"; 
while (list($key, $val) = each($HTTP_POST_VARS)) { 
$message .= "$key : $val\n"; 
} 
mail($TO, $subject, $message, $h); 
header("Location:accuse_devis.html"); 

?>



Pouvez vous m'aider à résoudre ce problème. Ca fait depuis 4h que je suis dessus, mais étant pas très fort en php... a mon avis cela vient de la page formulaire_devis.php car elle envoie au lieu de vérifier avant, mais sur la page du formulaire je l'ai noté en haut.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 oct. 2011, 11:34

salut,

Déplace le code de formulaire_devis.php dans ta 1ère validation du formulaire.

sinon déplace la validation dans formulaire_devis.php ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 43 Messages

31 oct. 2011, 14:58

salut,

Déplace le code de formulaire_devis.php dans ta 1ère validation du formulaire.

sinon déplace la validation dans formulaire_devis.php ;)

Comment ca? Tu veux dire mettre grosso modo la page formulaire_devis.php dans la premiere finalement entre

$message = "Votre adresse e-mail n'est pas valide";
}

else
{


et

// Message de confirmation
$message = "Merci beaucoup<br />\n";

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 oct. 2011, 17:37

clairement ça
<?php
      // Une fois le formulaire envoyé
      if(isset($_POST["button"]))
      {
           
           // Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["nom"]))
           {
                $message = "Votre nom doit comporter entre 4 et 20 caractères<br />\n";
                $message .= "L'utilisation de l'underscore est autorisée";
           }
           elseif(!preg_match("/^[A-Za-z0-9]{4,}$/", $_POST["prenom"]))
           {
                $message = "Votre prénom doit comporter entre 4 et 20 caractères";
           }
             elseif(!preg_match("/^[0-9]{4,}$/", $_POST["telephone"]))
           {
                $message = "Votre numéro de téléphone n'est pas renseigné";
           }
                     elseif(!preg_match("/^[A-Za-z0-9]{4,}$/", $_POST["ville"]))
           {
                $message = "Votre ville n'est pas renseignée";
           }
           elseif(!preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$/",
$_POST["email"]))
           {
                $message = "Votre adresse e-mail n'est pas valide";
           }
           else
           {
                   
                                    // Message de confirmation
                                    $message = "Merci beaucoup<br />\n";
                                    $message .= "Un email vient de vous être envoyer afin de l'activer";
                                    
                                    // On masque le formulaire
                                    $masquer_formulaire = true;
                                    
                               }
                                                           }
?>
c'est la validation du formulaire elle doit donc être sur la page d'action du formulaire ici formulaire_devis.php.

après dans le code de validation faut inclure l'utilisation de la fonction mail afin de pouvoir recevoir cette email !

@+
Il en faut peu pour être heureux ......