problème formulaire de contact

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème formulaire de contact

Re: problème formulaire de contact

par vilatlse » 21 nov. 2012, 14:35

Merci beaucoup ! Je teste ça et je reviens dire si ça fonctionne !

Re: problème formulaire de contact

par Saian » 21 nov. 2012, 14:07

Un peu comme je l'expliquai à Paps dans une autre sujet, fait une seule page comme ça :
<?php
if(/* le formulaire est soumis */) {
  // traitement d'envoi du formulaire
  // si il y a des erreurs -> stocker les erreurs dans un tableau
  // sinon envoi du mail
}
?>
<html>
<head>...</head>
<body>
  <!-- le header -->
  <?php if(/* il y a des erreurs dans le tableau d'erreurs */): ?>
    <!-- afficher les erreurs -->
  <?php endif; ?>
  <!-- le formulaire -->
  <!-- le footer -->
</body>
</html>
Pour le submit qui se fait quand même alors que tu return false; après l'alert ça m'étonne.
En tout cas si tu veux afficher l'erreur avec les autres sous le formulaire fait le test en php également au lieu de faire un bout en javascript et un bout en php.

problème formulaire de contact

par vilatlse » 21 nov. 2012, 13:50

Bonjour à tous !

je poste pour la première fois ici parce que j'ai un petit problème avec un formulaire de contact.

Pour faire simple, une fois que le formulaire est correctement complété, je reçois un mail (jusque là tout va bien)

Par contre quand il manque des informations, des messages s'affichent pour l'utilisateur :
- s'il manque l'email "Vous n'avez pas complété votre adresse email." -> s'ouvre dans une nouvelle fenêtre -> je souhaiterai que ça s'affiche sur la page courante sous le formulaire
- si la box1 n'est pas cochée "Vous devez cocher la box1" -> s'ouvre dans une alert mais envoie quand même le mail -> je souhaiterai que la mention s'affiche aussi sous le formulaire et surtout qu'aucun mail ne soit envoyé

Avez-vous une idée de la façon dont je peux régler ces deux problèmes ? Merci d'avance !

Voici les codes

POUR LE FICHIER INDEX.PHP
<html>
<body>

<form action="envoi.php" method="post" onsubmit="check()"> 

<input type="text" id="email" name="email">

<input type="image" onsubmit="check()" src="http://.../image.jpg" />

<input type="checkbox" id="box1" name="box1" value="yes" /><label for="box1">XXX</label><br /> 
<input type="checkbox" id="box2" name="box2" value="yes" /><label for="box2">XXX</label><br /> 
     
</form>

<script type="text/javascript"> 
  function check() { 
    var box1 = document.getElementById('box1'); 
    
    if(box1.checked == false) { 
 
      alert('Vous devez cocher la box1'); 
      return false; 
    } else { 
 
      return true; 
    } 
  } 
</script>

</body>
</html>
POUR LE FICHIER ENVOI.PHP
<?php

if(!empty($_POST['email'])) {

$message= $_POST['email']."\n".$_POST['box2'];
$objet= 'XXX'; 
mail("[email protected]",$objet,$message); 
echo	"<p>Votre e-mail a bien été envoyé, nous vous remercions!</p>"; 
}

else { 
echo "<p>Vous n'avez pas complété votre adresse email.</p>"; 
} 

?>