Validation de formulaire

poky17 Messages postés 53 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

Bon, alors des nouvelles toutes fraîches !!!
ça va un peu mieux, j'ai essayé sur un formulaire de contact.
Les infos sont renvoyées sur une page qui s'appelle traitement.php, j'ai donc tout mis dedans.
Alors, maintenant, si le code est absent ou incorrect, il affiche le message correspondant, mais il valide le formulaire quoi qu'il arrive.
D'ailleurs, il doit y avoir une erreur quelque part, car les champs obligatoires s'ils ne sont pas remplis, on le signale, mais ça valide aussi.
Je vous fournis l'extrait de code de traitement.php.
Merci à tous.
Poky

<!-- content -->
<div id="content">
<h1>Fomulaire validé</h1>
<div class="text">
<p align="center"> Votre message a bien été envoyé et sera traité très prochainement.</>
<p align="center">Merci de votre visite.</p>
<?php

// vérification des champs
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre email<br/>";
if (empty($_POST['tel']))
$message .= "Votre téléphone<br/>";
if (empty($_POST['comments']))
$message .= "Votre message<br/>";

if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else

// Informations d'entête du mail:
$headers ="MIME-Version: 1.0\r\n";
$headers .='From: Formulaire InfoBulle';
$headers .='Reply-To: contact@info-bulle.net' ." \r\n";
$headers .='Content-Type: text/plain; ';
$headers .='charset="iso-8859-1"'."\r\n";
$headers .="Content-Transfer-Encoding: 8bit\r\n";
$headers .='X-Mailer:PHP/' . phpversion() . "\r\n";

// sujet du mail
$sujet = "Formulaire du site";
// corps du mail
$message ="\n Civilité : $civilite \n Nom : $nom \n Adresse : $adresse \n Email : $email \n Tél : $tel \n Commentaires : $comments";
$retval = mail("contact@info-bulle.net",$sujet,$message,$headers);

if (chk_crypt($_POST['code']))
echo "<a><font color='#009700'>=> Bravo, vous avez saisi le bon code !</font></a>" ;
else echo "<a><font color='#FF0000'>=> Erreur, le code est incorrect</font></a>" ;

?>

3 réponses

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Dans le code de ta page, regarde les quelques premières lignes : <h1>...
Qu'est-ce qui les empêche de s'afficher, que le formulaire soit valide ou non ?

Idem pour le code : seul le texte affiché change, pas le traitement (l'envoi de mail est déjà fait...)

Par ailleurs, il manque des accolades { } après ton premier else... J'imagine qu'elles sont censées englober tout le code jusqu'au ?>...

Bref, au final, voilà ma version :
<!-- content -->
  <div id="content">

<?php
  // vérification des champs
  if (empty($_POST['nom']))
    $message .= "Votre nom<br/>";
  if (empty($_POST['email']))
    $message .= "Votre email<br/>";
  if (empty($_POST['tel']))
    $message .= "Votre téléphone<br/>";
  if (empty($_POST['comments']))
    $message .= "Votre message<br/>";

  if (strlen($message) > strlen($msg_erreur))
  {
    echo "<h1>Formulaire invalide</h1>";
    echo $message;
  }
  else
  {
?>
    <h1>Fomulaire validé</h1>
    <div class="text">
      <p align="center"> Votre message a bien été envoyé et sera traité très prochainement.</p>
      <p align="center">Merci de votre visite.</p>
<?php
    // Informations d'entête du mail:
    $headers ="MIME-Version: 1.0\r\n";
    $headers .='From: Formulaire InfoBulle';
    $headers .='Reply-To: contact@info-bulle.net' ." \r\n";
    $headers .='Content-Type: text/plain; ';
    $headers .='charset="iso-8859-1"'."\r\n";
    $headers .="Content-Transfer-Encoding: 8bit\r\n";
    $headers .='X-Mailer:PHP/' . phpversion() . "\r\n";

    // sujet du mail
    $sujet = "Formulaire du site";
    // corps du mail
    $message ="\n Civilité : $civilite \n Nom : $nom \n Adresse : $adresse \n Email : $email \n Tél : $tel \n Commentaires : $comments";
    $retval = mail("contact@info-bulle.net",$sujet,$message,$headers);

    if (chk_crypt($_POST['code']))
      echo "<font color='#009700'>=> Bravo, vous avez saisi le bon code !</font>" ;
    else
      echo "<font color='#FF0000'>=> Erreur, le code est incorrect</font>" ;

  echo "</div>";
  }
?>
  </div>
Xavier

(PS : n'hésite pas à utiliser les balises <code> du forum pour afficher le code source avec les indentations, histoire que ce soit plus clair !)
0
poky17 Messages postés 53 Statut Membre
 
Bonjour,

Merci Xavier de t'être occupé de mon cas, mais désolée, y'a encore du boulot pour tout le monde.
Alors, première chose, si je suis ton code, ça me fout en l'air toute la mise en page. Pourquoi ? Pb de Div peut-être ?
Si je ne rentre que le code du Captcha sans les champs obligatoires, ça me met formulaire invalide. Donc logique.
Par contre, si je remplis les champs et le code de la Captcha, ça devrait marcher. Eh bien non, ça me met aussi formulaire invalide.
Votre nom, votre tél, votre email.
Il ne prend donc pas en compte le code.
Par contre, le mieux c'est que ça n'est pas envoyé sur l'email.
Ah on doit pas en être très loin.

Merci à tous.
Poky
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Ah, c'est un captcha !
Donc il faut faire la vérification avant d'envoyer le mail.

Ensuite, si ça fout en l'air toute ta présentation, ça doit être parce que tu n'as pas tout mis sur le forum. J'ai bêtement fermé le <div>, mais si tu as d'autres choses dans le code qui sont censées aller au même endroit, il ne faut pas le fermer là où je l'ai fait.

Bon, voilà ce que ça donne, du coup :
<!-- content -->
  <div id="content">

<?php
  // vérification des champs
  if (empty($_POST['nom']))
    $message .= "Votre nom<br/>";
  if (empty($_POST['email']))
    $message .= "Votre email<br/>";
  if (empty($_POST['tel']))
    $message .= "Votre téléphone<br/>";
  if (empty($_POST['comments']))
    $message .= "Votre message<br/>";

  if (strlen($message) > strlen($msg_erreur))
  {
    echo "<h1>Formulaire invalide</h1>";
    echo $message;
  }
  elseif (!chk_crypt($_POST['code']))
  {
      echo "<h1>Code invalide</h1>";
      echo "<font color='#FF0000'>=> Erreur, le code est incorrect</font>" ;
  }
  else
  {
?>
    <h1>Fomulaire validé</h1>
    <div class="text">
      <font color='#009700'>=> Bravo, vous avez saisi le bon code !</font>
      <p align="center"> Votre message a bien été envoyé et sera traité très prochainement.</p>
      <p align="center">Merci de votre visite.</p>
<?php
    // Informations d'entête du mail:
    $headers ="MIME-Version: 1.0\r\n";
    $headers .='From: Formulaire InfoBulle';
    $headers .='Reply-To: contact@info-bulle.net' ." \r\n";
    $headers .='Content-Type: text/plain; ';
    $headers .='charset="iso-8859-1"'."\r\n";
    $headers .="Content-Transfer-Encoding: 8bit\r\n";
    $headers .='X-Mailer:PHP/' . phpversion() . "\r\n";

    // sujet du mail
    $sujet = "Formulaire du site";
    // corps du mail
    $message ="\n Civilité : $civilite \n Nom : $nom \n Adresse : $adresse \n Email : $email \n Tél : $tel \n Commentaires : $comments";
    $retval = mail("contact@info-bulle.net",$sujet,$message,$headers);

// [... placer tout le reste qui ne doit apparaître que pour un formulaire valide ...]
  }
// [... reste du code commun aux cas "valide" et "invalide" ...]
?>
0