> Tous les forumsForum des Webmasters

 formulaire avec contrôle anti-spam
Statut du sujet : NON RESOLU Imprimer
 t671
  Posté le 04/03/2008 @ 13:55  
 Astucien

1067 Messages

Bonjour,

J'ai un formulaire dans lequel je souhaiterais inclure un code de vérification anti-spam.

La page de saisie du commentaire s'ouvre, avec des champs à remplir (adr email, nom, commentaire), et s'affiche un code numérique qui n'est autre que l'heure, minute, seconde ($heure_x) du système au format uniquement numérique sur 8 caractères.
Une case se trouve à côté où la personne doit recopier la valeur de $heure_x.
Si la saisie est = à $heure_x, il y a inscription du formulaire ds la base (add.php), sinon, il y a boucle sur le formulaire.

Mon problème est que je n'arrive pas à faire la vérification ......

Mon formulaire :

  1. <font color="green"><div class="apercu" name="resultat" id="resultat" value= "resultat" style="width: 894; height: 41">
  2. </font>
  3. <form method="POST" action="add.php" value="envoyer" name="soumettre">
  4. <p><u><b>Votre Nom :</b></u> <textarea cols="40" name="nom" id="Nom" rows="1"></textarea><br>
  5. <u><b>Adresse mail :</b></u> <textarea cols="40" name="mail" id="Mail" rows="1"></textarea><p>
  6. <center>
  7. <p><u><b>Votre commentaire :</b></u><p><textarea cols="65" name="message" id="Message" rows="8" wrap="VIRTUAL" accesskey="c" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" ></textarea><p>
  8. <?php
  9. $heure_x = date("His");
  10. echo "Code ='$heure_x' ";
  11. ?>
  12. <textarea cols="8" name="heure_x" id="heure_x" rows="1" ></textarea><p>
  13. <input type="button" value="Aperçu" onclick="TAinsert;OpenPreview();" style="text-decoration: none">
  14. <input type="submit" name="preview" value="Valider">
  15. <input type="reset" value="Effacer">
  16. <!-- permet de passer id_reco au script suivant (add.php) -->
  17. <input type="hidden" name="id_reco" id="id_reco" value="<?php echo $_GET['id_reco']; ?>"><p>
  18. <a href="menu.php"><img src="annuler.JPG" border="0"></a>
  19. </form>

Merci pour votre aide .....

 Afficher le profil de t671 Envoyer un message privé à t671
 
 
Publicité
 Malcolm  Posté le 04/03/2008 à 21:48  
  Astucien


7299 Messages

Salut,

Je ne comprends pas trop le principe, et de toutes façons on n'a pas "add.php".

Qu'est-ce qui te garantit que l'heure générée au moment de l'affichage du formulaire sera la même que celle vérifiée ?

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 t671  Posté le 05/03/2008 à 10:21  
Astucien

1067 Messages

Salut Malcom,

Pour la concordance de l'heure générée au moment de l'affichage du formulaire et celle vérifiée, peut être la même si l'heure affichée est enregistrée. Mais je voudrais éviter de l'enregistrer dans la base, car elle devient inutile après le traitement. Il faudrait que je l'enregistre en mémoire temporaire (ou quelque chose comme ça), et que la vérification de l'heure affichée et saisie se fasse avant de passer au script "add.php". J'ai entendu parler de "Session", mais je n'y connais pas grand chose !!! A moins que tu ais unemeilleure solution .........

Je te met mon script add.php :

  1. <?php include ('../../connexion/connexion.php');
  2. // récupération des données du formulaires commentaire.htm
  3. $nom = $_POST['nom'];
  4. $mail = $_POST['mail'];
  5. $message = $_POST['message'];
  6. $id_reco = $_POST['id_reco'];
  7. // On vérifie si les champs sont vides
  8. if(empty($nom) OR empty($mail) OR empty($message))
  9. {
  10. echo '<center><font color="red"><h1>Attention, au moins un champ est vide !</h1></font><p>
  11. <h2><a href=commentaire.htm>Retour</a></h2></center>';
  12. }
  13. // Aucun champ n'est vide, on peut enregistrer dans la table
  14. else
  15. //enregistrement dans la table
  16. $jour=date("d");
  17. $mois=date("m");
  18. $annee=date("Y");
  19. $date = "$jour/$mois/$annee";
  20. // on écrit la requête sql
  21. $sql = "INSERT INTO com_reconstitution(commentaire, date_com, nom_com, email_com, id_reco_com) VALUES('$chaine', '$date', '$nom', '$mail', '$id_reco')";
  22. // on insère les informations du formulaire dans la table
  23. mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
  24. mysql_close(); // on ferme la connexion
  25. header("Location: result_commentaire.php?id_reco=$id_reco");
  26. exit;
  27. ?>

Merci pour ton aide

Afficher le profil de t671 Voir la configuration de t671Envoyer un message privé à t671
 Revenir en haut de la page
 Malcolm  Posté le 05/03/2008 à 13:12  
  Astucien


7299 Messages

Hello,

tout d'abord ton "else" sans accolades ne te servira pas, ou du moins il exécutera la première instruction et les suivantes seront communes au if et au else.

Il n'y a pas besoin d'enregistrer l'heure dans la BDD, mais il faut la passer soit en session, soit en input hidden ... Enfin, perso j'ai préféré une autre solution pour l'antispam ...

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page