Problème sur le placement de recaptcha - PHP  

Forum > PHP > Problème sur le placement de recaptcha

Problème sur le placement de recaptcha

ok Le problème posé sur ce sujet a été résolu.
Membre
# Le 28/06/2012 à 08h59
Bonjour à vous, voila j'ai suivi votre tuto, alors l'affichage du captcha c'est à dire de l'insertion des lettre fonctionne bien cependant, c'est la seconde page, celle qui traite les données du formulaire qui n'affiche rien.
Et quand je retire tout ce qui est du captcha ça marche, donc je pense que cela vient du placement de ces données là.
La page formulaire (fonctionne bien):
  1. <?php
  2. require_once('recaptchalib.php');
  3. $publickey = " ";
  4. ?>
  5.  
  6.  
  7. <fieldset>
  8. <table align="left">
  9. <form action="/index.php/save-mairie.html" method="post" enctype="multipart/form-data">
  10. <tr>
  11. <label><td> Le nom de la mairie : </td><td><input type="text" name="nom_mairie" ></td></label></tr>
  12. <tr>
  13. <label><td> Le code postal : <td><input type="text" name="cp"></td></label></tr>
  14. <tr>
  15. <label><td> Le d&eacute;partement : <td><input type="text" name="dep"></td></label></tr>
  16. <tr>
  17. <label><td> Le num&eacute;ro du d&eacute;partement : <td><input type="text" name="num_dep"></td></label></tr>
  18. <tr>
  19. <label><td> Le nom de la r&eacute;gion : <td><input type="text" name="reg"></td></label></tr>
  20. <tr>
  21. <label><td> Nom des habitants : <td><input type="text" name="hb"></td></label></tr>
  22.  
  23. <tr>
  24. <label><td> Nom des habitantes : <td><input type="text" name="hbt"></td></label></tr>
  25. <tr>
  26. <label><td> Le nom de la pr&eacute;fecture : <td><input type="text" name="prefec"></td></label></tr>
  27.  
  28. <tr>
  29. <label><td> Email de la mairie : <td><input type="text" name="mail"></td></label></tr>
  30. <tr>
  31. <label><td> Le site de la mairie : <td><input type="text" name="urlcom"></td></label></tr>
  32. </table>
  33. <table align="right">
  34. <tr>
  35. <label><td> Le nom de la photo 1 : <td><input type="text" name="pict1"></td></label></tr>
  36. <tr>
  37. <label for="photo"><td>Photo :</td></label><td><input type="file" name="photo" /></td></tr>
  38. <tr>
  39. <label><td> Le nom de la photo 2 : <td><input type="text" name="pict2"></td></label></tr>
  40. <tr>
  41. <label for="photo_2"><td>Photo 2 :</td></label><td><input type="file" name="photo_2" /></td></tr>
  42. <tr>
  43. <label><td> Le nom de la photo 3 : <td><input type="text" name="pict3"></td></label></tr>
  44. <tr>
  45. <label for="photo_3"><td>Photo 3 :</td></label><td><input type="file" name="photo_3" /></td></tr>
  46. <tr>
  47. <label><td> Commentaire : <td><TEXTAREA rows="3" rows="5" name="comm"> </TEXTAREA>
  48. </td></label></tr>
  49. <tr>
  50. <td></td><td><input type="submit" value="Envoyer"></td>
  51. </table>
  52. </form>
  53. </fieldset>
  54.  
  55. <?php echo recaptcha_get_html($publickey); ?>


Ensuite la page de traitement et d'affichage des résultats (ne fonctionne pas) :
  1. <?php
  2.  
  3. require_once('recaptchalib.php');
  4.  
  5. $privatekey = "";
  6. $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
  7.  
  8. if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  9. // Si le captcha n'est pas valide
  10. echo 'Oups, le captcha antispam n\'est pas valide. Veuillez recommencer';
  11. }
  12.  
  13. else{
  14. // On commence par récupérer les champs
  15. if(isset($_POST['nom_mairie'])) $nom_mairie=$_POST['nom_mairie'];
  16. else $nom_mairie="";
  17.  
  18. if(isset($_POST['cp'])) $cp=$_POST['cp'];
  19. else $cp="";
  20.  
  21. if(isset($_POST['dep'])) $dep=$_POST['dep'];
  22. else $dep="";
  23.  
  24. if(isset($_POST['num_dep'])) $num_dep=$_POST['num_dep'];
  25. else $num_dep="";
  26.  
  27. if(isset($_POST['reg'])) $reg=$_POST['reg'];
  28. else $reg="";
  29.  
  30. if(isset($_POST['prefec'])) $prefec=$_POST['prefec'];
  31. else $prefec="";
  32.  
  33. if(isset($_POST['comm'])) $comm=$_POST['comm'];
  34. else $comm="";
  35.  
  36. if(isset($_POST['pict1'])) $pict1=$_POST['pict1'];
  37. else $pict1="";
  38.  
  39. if(isset($_POST['pict2'])) $pict2=$_POST['pict2'];
  40. else $pict2="";
  41.  
  42. if(isset($_POST['pict3'])) $pict3=$_POST['pict3'];
  43. else $pict3="";
  44.  
  45. if(isset($_POST['urlcom'])) $urlcom=$_POST['urlcom'];
  46. else $urlcom="";
  47.  
  48. $dossier = 'img_mairies/';
  49. $fichier = basename($_FILES['photo']['name']);
  50. $fichier2 = basename($_FILES['photo_2']['name']);
  51. $fichier3 = basename($_FILES['photo_3']['name']);
  52. $taille_maxi = 500000;
  53. $taille = filesize($_FILES['photo']['tmp_name']);
  54. $extensions = array('.png', '.gif', '.jpg', '.jpeg');
  55. $extension = strrchr($_FILES['photo']['name'], '.');
  56.  
  57.  
  58. //Début des vérifications de sécurité...
  59. if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
  60. {
  61. $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
  62. }
  63. if($taille>$taille_maxi)
  64. {
  65. $erreur = 'Le fichier est trop gros...';
  66. }
  67.  
  68.  
  69. if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
  70. {
  71. //On formate le nom du fichier ici...
  72. $fichier = strtr($fichier,
  73. 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  74. 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  75. $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
  76.  
  77.  
  78. if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $pict1 . $extension) AND move_uploaded_file($_FILES['photo_2']['tmp_name'], $dossier . $pict2. $extension) AND move_uploaded_file($_FILES['photo_3']['tmp_name'], $dossier . $pict3 . $extension))//Si la fonction renvoie TRUE, c'est que ça a fonctionné...
  79. {
  80. echo 'Upload effectu&eacute; avec succ&egrave;s !';
  81. }
  82. else //Sinon (la fonction renvoie FALSE).
  83. {
  84. echo 'Echec de l\'upload !';
  85. }
  86. }
  87. else
  88. {
  89. echo $erreur;
  90. }
  91. // sélection de la base
  92. require_once('inc/connexion_base.inc.php');
  93.  
  94. // on écrit la requête sql
  95. $sql = "INSERT INTO tb_mairie(url, nom, num_dep, cp, num_cc, visite, photo1, photo2, photo3, commentaire, gestionnaire, email, date_insc, etat, id_commune, habitant, habitante, map_name, fluxrss) VALUES('$urlcom', '$nom_mairie', '$num_dep', '$cp', '', '', '$pict1', '$pict2', '$pict3', '', '', '', '', 'e', '', '', '', '', '')";
  96.  
  97. // on insère les informations du formulaire dans la table
  98. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  99.  
  100. // on affiche le résultat pour le visiteur
  101. echo "Merci ! Vos infos on &eacute;t&eacute; ajout&eacute;es &agrave; notre base de donn&eacute;es.";
  102. }
  103. ?>

J'ai fait pas mal de test, mais aucun bon résultats.
Merci à vous de m'aider.
EDIT : Finalement après quelques essaies j'ai réussi à afficher comme quoi le captcha est faux, mais maintenant le soucis est que c'est tout le temps faux.
avatar de Tony_
Administrateur
# Le 28/06/2012 à 22h09
Bonjour.
Il y a 2 petites erreurs dans votre code de la page 1. Tout d'abord, le code HTML est mal structuré. Vous ouvrez le code HTML de la table (cf. </table>) avant d'ouvrir le code HTML du formulaire (cf. <form>). Il faut inverser les lignes 8 et 9.
La deuxième erreur c'est que vous insérez le code recaptcha en dehors du formulaire HTML. Il faut l'insérer entre les balises <form> et </form>.

J'espère qu'avec ceci votre code fonctionnera parfaitement.
Bon courage.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
Membre
# Le 29/06/2012 à 08h50
smiley
Ça marche merci à vous, quelles erreurs en plus smiley
Membre
# Le 10/07/2012 à 16h32

salut

merci pour ces explications pour le html j'en ai profitée pour plus de compréhension. je pense que c'est ça l'utilité des forums.