| | 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 : <font color="green"><div class="apercu" name="resultat" id="resultat" value= "resultat" style="width: 894; height: 41"> </font> <form method="POST" action="add.php" value="envoyer" name="soumettre"> <p><u><b>Votre Nom :</b></u> <textarea cols="40" name="nom" id="Nom" rows="1"></textarea><br> <u><b>Adresse mail :</b></u> <textarea cols= "40" name= "mail" id= "Mail" rows= "1"></textarea><p> <center> <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> <?php echo "Code ='$heure_x' "; ?> <textarea cols="8" name="heure_x" id="heure_x" rows="1" ></textarea><p> <input type="button" value="Aperçu" onclick="TAinsert;OpenPreview();" style="text-decoration: none"> <input type="submit" name="preview" value="Valider"> <input type="reset" value="Effacer"> <!-- permet de passer id_reco au script suivant (add.php) --> <input type="hidden" name="id_reco" id="id_reco" value="<?php echo $_GET['id_reco']; ?>"><p> <a href="menu.php"><img src="annuler.JPG" border="0"></a> </form>
Merci pour votre aide .....
| | |
| |
| 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 ? | | | | | 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 : <?php include ('../../connexion/connexion.php'); // récupération des données du formulaires commentaire.htm $nom = $_POST['nom']; $mail = $_POST['mail']; $message = $_POST['message']; $id_reco = $_POST['id_reco']; // On vérifie si les champs sont vides if(empty($nom) OR empty($mail) OR empty($message)) { echo '<center><font color="red"><h1>Attention, au moins un champ est vide !</h1></font><p> <h2><a href=commentaire.htm>Retour</a></h2></center>'; } // Aucun champ n'est vide, on peut enregistrer dans la table else //enregistrement dans la table $jour=date("d"); $mois=date("m"); $annee=date("Y"); $date = "$jour/$mois/$annee"; // on écrit la requête sql $sql = "INSERT INTO com_reconstitution(commentaire, date_com, nom_com, email_com, id_reco_com) VALUES('$chaine', '$date', '$nom', '$mail', '$id_reco')"; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error()); mysql_close(); // on ferme la connexion header("Location: result_commentaire.php?id_reco=$id_reco"); exit; ?>
Merci pour ton aide | | | | | 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 ... | | | |
| | 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
|
|