Rechercher : dans
Par :

Validation de formulaire

Dernière réponse le 11 sep 2007 à 10:47:19 poky17, le 10 sep 2007 à 11:09:19 
 Signaler ce message aux modérateurs

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>" ;

?>

Configuration: Windows Vista
Firefox 2.0.0.6

Meilleures réponses pour « Validation de formulaire » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
Ergonomie des formulaires en ligne VoirLes formulaires constituent un style d'interaction particulier qui comme les formulaires papier permettent de guider la saisie d'informations dans des champs spécifiques identifiés par des intitulés... Les formulaires permettent notamment de...
Télécharger Dynamic Email Validator VoirNe perdez plus de clients parce que son adresse n’est plus valide et que vous n’étiez pas au courant. Dynamic Email Validator est un programme de vérification et de réhabilitation de votre liste de mail. De part cette analyse, il vérifie...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
Servlets - Gestion des formulaires VoirIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...
Bases de données - Utilisation de formulaires VoirUtilisation de formulaires Afin d'exploiter les bases de données, il faut fournir une interface à l'utilisateur lui permettant de visualiser des données en fonction de certains critères. Pour cela il existe un outil : les formulaires. Un formulaire...

1

Reivax962, le 10 sep 2007 à 11:44:32

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 !)

Répondre à Reivax962

2

poky17, le 11 sep 2007 à 10:31:09

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

Répondre à poky17

3

 Reivax962, le 11 sep 2007 à 10:47:19

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" ...]
?>

Répondre à Reivax962