> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
45,49 €Ponceuse murale TACKLIFE 800W + 12 papiers abrasifs 225 mm à 45,49 € avec le code FBLUGC44
Valable jusqu'au 23 Octobre

Amazon fait une promotion sur la ponceuse murale et plafond TACKLIFE 800W+ 12 papiers abrasifs 225 mm qui vous reviendra à 45,49 € seulement avec le code FBLUGC44 au lieu de 70 euros habituellement. Cet ponceuse idéale pour le placo possède 6 vitesses réglables et est accompagnée de poignées amovibles, d'un tuyau et d'un sac d'aspiration pour récupérer toute la poussière. Elle intègre même des LED pour éclairer votre zone de travail.

Pour profiter de l'offre, passez la souris sur le bouton Message promotionnel et cliquez sur Appliquer à côté des 35% de réduction. Vous pouvez aussi utiliser le code promo FBLUGC44 sur la page de paiement.


> Voir l'offre
19,16 €Clé USB 3.1 Sandisk Ultra Luxe 128 Go à 19,16 €
Valable jusqu'au 24 Octobre

Amazon propose la clé USB Sandisk Ultra Luxe d'une capacité de 128 Go à 19,16 €. Cette clé USB 3.1 toute en métal est compatible USB 2.0 et offre de bons débits d'environ 150 Mo/s en lecture et en écriture. Elle inclut le logiciel SanDisk SecureAccess pour un cryptage et une protection par mot de passe de vos données sensibles.


> Voir l'offre
66,01 €Carte-mère MSI B450 Gaming Plus Max à 66,01 €
Valable jusqu'au 24 Octobre

Amazon fait une promotion sur la carte-mère MSI B450 Gaming Plus Max à qui passe à 66,01 € livré. Compatible avec les processeurs AMD Ryzen sur socket AMD AM4, elle prend en charge de la mémoire vive DDR4, des cartes graphiques PCI-Express 3.0 ou encore des disques SATA 6Gb/s et M.2 (SATA et PCIe).


> 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