Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1325 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petit soucis avec CAPTCHA et envoi de formulaire!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit soucis avec CAPTCHA et envoi de formulaire!

n°1642260
lofo7
Posté le 13-11-2007 à 15:17:36  profilanswer
 

Bonjour,
j'ai créé un formulaire avec plusieurs champs à remplir et je voulais insérer un CAPTCHA tout simple de vérification à la fin (CAPTCHA où l'on répond à une question et non CAPTCHA image).
Mon problème vient du fait que réponse juste ou fausse au captcha, le formulaire est envoyé sur mon adresse mail et les données de mon formulaire n'apparaissent pas sur le mail que je reçois.
 
Donc j'ai ma page de formulaire (que je n'indique pas ici, le pb ne vient pas de là) dirigée sur la page de vérification de CAPTCHA puis sur ma page d'envoi de formulaire.
 
 
Page de vérification de CAPTCHA
 

Code :
  1. <?php
  2. session_start();
  3. if(isset($_POST['reponsecaptcha1']))
  4. $tareponse = $_POST['reponsecaptcha1'];
  5. else
  6. $tareponse = "";
  7. $resultatcaptcha1 = $_SESSION['resultatcaptcha1'];
  8. if($resultatcaptcha1 == $tareponse) {
  9. header ('Location: http://www.page_envoi_formulaire.php');
  10. }
  11. else {
  12. echo "La réponse était <b>$resultatcaptcha1</b>\nVotre réponse était : <b>$tareponse</b>\nMauvaise réponse !";
  13. }
  14. ?>


 
En gros, j'aimerais que si la réponse est juste, je sois dirigé sur la page "http://www.page_envoi_formulaire.php" (code ci-dessous), et si la réponse est fausse, que le script s'arrête en indiquant "Mauvaise réponse".
 
 
Page envoi formulaire
 

Code :
  1. <?php
  2. $TO = "machin@gmail.com";
  3. $h  = "From: " . $TO;
  4. $message = "";
  5. while (list($key, $val) = each($HTTP_POST_VARS)) {
  6.   $message .= "$key : $val\n";
  7. }
  8. mail($TO, $subject, $message, $h);
  9. Header("Location: http://remerciements.php" );
  10. ?>


 
En plaçant ces deux codes sur la même page, j'obtiens les réponses de mon formulaire mais le CAPTCHA n'est pas pris en compte (bonne ou mauvaise réponse, le mail est envoyé).
En faisant comme ici, sur deux pages distinctes, le mail est envoyé mais sans rien dedans (je n'ai pas les réponses du formulaire).
Sans CAPTCHA, tout marche nickel mais là...  
 
J'ai sûrement fait une erreur quelque part  mais je n'arrive pas à voir où.
 
Avez-vous une idée ?
 
Max


Message édité par lofo7 le 27-10-2011 à 11:51:05
mood
Publicité
Posté le 13-11-2007 à 15:17:36  profilanswer
 

n°1642267
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 13-11-2007 à 15:21:59  profilanswer
 

pourquoi ne pas faire le traitement du formulaire à la place de l'actuel header ?
 
les valeurs des réponses en session (apparemment pour l'une) et récupérée sont correctes ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1642272
lofo7
Posté le 13-11-2007 à 15:27:50  profilanswer
 

Merci de ta réponse rapide.
J'ai déjà tenté de traiter le formulaire à la place du 'header' "header ('Location: http://www.page_envoi_formulaire.php');" .
 
En faisant de cette manière j'arrive à obtenir des réponses justes au formulaire mais le CAPTCHA n'est pas pris en compte. Ainsi, que j'ai une réponse  fausse ou juste au CAPTCHA le mail est envoyé.
 
Et pour ta deuxième question, comme je viens de le dire, si je mélange les deux scripts, les valeurs récupérées sont correctes oui mais c'est ce CAPTCHA qui marche pas. grrrrrrrrrrrrrrrr !!!
 
Voilà pourquoi j'ai essayé en divisant le code en deux fichiers mais ça marche pas non plus.
 
EDIT : Comme je disais juste au dessus même en regroupant tout sur une page comme ceci :

Code :
  1. <?php
  2. session_start();
  3. if(isset($_POST['reponsecaptcha1']))
  4. $tareponse = $_POST['reponsecaptcha1'];
  5. else
  6. $tareponse = "";
  7. $resultatcaptcha1 = $_SESSION['resultatcaptcha1'];
  8. if($resultatcaptcha1 == $tareponse) {
  9. $TO = "monadresse@mail.com";
  10. $h  = "From: " . $TO;
  11. $message = "";
  12. while (list($key, $val) = each($HTTP_POST_VARS)) {
  13.   $message .= "$key : $val\n";
  14. }
  15. mail($TO, $subject, $message, $h);
  16. Header("Location: http://remerciements.php" );
  17. }
  18. else {
  19. echo "La réponse était <b>$resultatcaptcha1</b>\nVotre réponse était : <b>$tareponse</b>\nMauvaise réponse !";
  20. }
  21. ?>


 
Et bien j'obtiens avec ce code toutes les réponses à mon formulaire mais le CAPTCHA n'est pas pris en compte. Que la réponse au CAPTCHA soit juste ou fausse, le mail me parvient :(


Message édité par lofo7 le 13-11-2007 à 16:57:51
n°1643081
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 14-11-2007 à 22:37:25  profilanswer
 

tu peux montrer le code du formulaire aussi ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1643176
lofo7
Posté le 15-11-2007 à 09:53:43  profilanswer
 

Alors cette fois-ci, le CAPTCHA fonctionne mais toujours pas comme je le souhaite. Il ne marche pas quand je donne une réponse (bonne ou mauvaise) et fonctionne à merveille quand je ne donne pas de réponses.  :pt1cable:  
 
Voilà le code du formulaire :
 

Code :
  1. <form action="formmail_autres.php" method="post" name="form">
  2. <table border="0" cellpadding="5" cellspacing="0" width="550">
  3. <tr>
  4.  <td width="212">Votre nom (ou un simple pseudo) :</td>
  5.  <td width="318"><input type="text" name="Pseudo" size="40"></td>
  6. </tr>
  7.         <tr>
  8.     <td>Votre email :</td>
  9.     <td><input type="text" name="Email" size="40"></td></tr>
  10. <tr>
  11.  <td>Artiste :</td>
  12.  <td><input type="text" name="Artiste" size="40"></td>
  13. </tr>
  14.      <tr>
  15.  <td>Album :</td>
  16.  <td><input type="text" name="Album" size="40"></td>
  17. </tr>
  18.         <tr>
  19.  <td>Titre de l'album :</td>
  20.  <td><input type="text" name="Titre_album" size="40"></td>
  21. </tr>
  22.         <tr>
  23.  <td>Sujet :</td>
  24.  <td><input type="text" name="Sujet" size="40"></td>
  25. </tr>
  26.         <tr>
  27.  <td>Commentaires :</td>
  28.  <td><textarea rows="10" name="Commentaires" cols="45"></textarea></td>
  29. </tr>
  30.         <tr>
  31.  <td>Voulez-vous que votre nom (pseudo) apparaisse sur le site avec vos informations ?</td>
  32.  <td><input name="infos" type="radio" value="Oui" />
  33.  Oui
  34.      
  35.         <input name="infos" type="radio" value="Non" />Non</td>
  36. </tr>
  37.     <tr>
  38.  <td>   
  39. <?php
  40. srand();
  41. echo "<u>Captcha 1</u><br /><br />";
  42. $caracteres = array('A','Z','E','R','T','Y','U','I','O','P','Q','S','D','F','G','H','J','K','L','M','W','X','C','V','B','N','a','z',
  43. 'e','r','t','y','u','i','o','p','q','s','d','f','g','h','j','k','l','m','w','x','c','v','b','n');
  44. $mini = rand(5,10);
  45. $maxi = rand(10,20);
  46. $longueurdelachaine = rand($mini,$maxi);
  47. for($i = 1; $i <= $longueurdelachaine; $i++)
  48. {
  49. $chaine .= $caracteres[rand(0,51)]; //on concatène à chaque fois la variable $chaine
  50. }
  51. $position = rand(5,$longueurdelachaine);
  52. $indice = $position -1;
  53. $_SESSION['resultatcaptcha1'] = substr($chaine, $indice, 1);
  54. echo "Voici la chaîne de caractère : <b>$chaine</b><br />";
  55. echo "Quel est le caractère à la position <b>$position</b> ?<br /><br />";
  56. ?>
  57. </td>
  58. <td><input type="text" name="reponsecaptcha1" value="" /></td>
  59. </tr>     
  60.     <tr>
  61.  <td>C'est fini...</td>
  62.  <td>
  63.   <div align="left">
  64.     <input type="submit" value="Envoyer"> -
  65.                  <input type="reset" value="Effacer"></div>  </td>
  66. </tr>
  67. </table>
  68. </form>


Message édité par lofo7 le 15-11-2007 à 09:54:45
n°1644419
lofo7
Posté le 17-11-2007 à 13:42:06  profilanswer
 

Personne n'a d'idées ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petit soucis avec CAPTCHA et envoi de formulaire!

 

Sujets relatifs
[Résolu] [PHP] [Formulaire d'inscription]validation automatique de formulaire
Bug sur mon petit projet incompréhensible...Probleme avec une variable dasn un formulaire
[Access] Petit problème de requeteLiens Mort [Envoi automatique]
[MySql] Soucis avec procédure stockée (newbie)Récupérer les données d une table dans un formulaire
Besoin d aide pour Mettre a jour Mysql avec un formulaireerreur envoi smtp
Plus de sujets relatifs à : Petit soucis avec CAPTCHA et envoi de formulaire!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR