× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum des Webmasters
 formulaire avec contrôle anti-spam
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 04/03/2008 @ 13:55 
Aller en bas de la page 
Astucien

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 .....



Modifié par t671 le 04/03/2008 17:28
Publicité
Malcolm
 Posté le 04/03/2008 à 21:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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 ?

t671
 Posté le 05/03/2008 à 10:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

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

Malcolm
 Posté le 05/03/2008 à 13:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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 ...

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
38,99 €Ensemble clavier et souris sans fil Logitech MK540 Advanced à 38,99 €
Valable jusqu'au 30 Octobre

Amazon fait une promotion sur l'ensemble Logitech MK540 Advanced qui passe à 38,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 55 €. Ce pack comporte un clavier et une souris sans fil d'une portée de 10 mètres. Conçu pour être précis, confortable et fiable, l'ensemble Logitech MK540 Advanced se compose d'un clavier de taille standard avec repose-poignets et pieds d'inclinaison réglables et d'une souris profilée et ambidextre. Les touches du clavier ont été optimisées pour améliorer la précision et réduire le bruit alors que vos doigts se sentiront immédiatement à l'aise grâce à la disposition familière des touches. 


> Voir l'offre
31,99 €Clé USB 3.0 Sandisk Ultra 256 Go à 31,99 €
Valable jusqu'au 29 Octobre

Amazon propose la clé USB Sandisk Ultra d'une capacité de 256 Go à 31,99 € livrée gratuitement. On la trouve ailleurs à partir de 50 €. Cette clé USB 3.0 est compatible USB 2.0 et offre de bons débits d'environ 100 Mo/s en lecture et en écriture. Le connecteur est rétractable pour éviter qu'il prenne la poussière.


> Voir l'offre
8 €Jeu de 4 tournevis Stanley Cushion Grip à 8 €
Valable jusqu'au 31 Octobre

Amazon fait une promotion sur le lot de 4 tournevis Stanley Cushion Grip qui passe à 8 € au lieu de 19 €. Lame plaquée chrome anti-corrosion. Manche soft grip pour un confort et un contrôle parfait. Les extrémités sont aimantées.


> Voir l'offre

Sujets relatifs
Formulaire qui ne fonctionne pas avec Joomla
Pas de mail recu avec formulaire html et php
Utilité d'un captcha avec un formulaire
Formulaire php avec upload de 2 fichiers. Formail
Contrôle Formulaire PHP & JS (alert)
Help Malcom : formulaire mail php avec copie caché
Formulaire HTML avec DreamWeaver CS3
Formulaire avec Webcreator Pro4
soucis formulaire avec mysql
formulaire et spam
Plus de sujets relatifs à formulaire avec contrôle anti-spam
 > Tous les forums > Forum Forum des Webmasters