Forum > PHP > ReCaptcha sur une page PHP

ReCaptcha sur une page PHP

ok Le problème posé sur ce sujet a été résolu.
Page : 1 2
avatar de Vitoutso
Membre
# Le 07/09/2010 à 20h31
Est-ce que ce bout de code ne serait pas responsable de ce dysfonctionnement ? :
  1. if (!$resp->is_valid) {


Si ont supprime is->_valid est-ce que ça fonctionnerait ? Ce qui donnerai donc :
  1. if (!$resp) {


J'attends votre avis..!
Aider son prochain c'est donner sans rien attendre en retour !
avatar de stc
Membre
# Le 07/09/2010 à 20h36
en fait l'appel de la function se fait par :
  1. recaptcha_check_answer()

Ce qui signifie que dans ton code la fonction doit etre déclarée de la sorte :
  1. function recaptcha_check_answer() {
  2. //code de la fonction
  3. }

Alors avec ton erreur il y a 2 possibilités:
-Soit la fonction n'est pas déclarée,
-Soit ce n'est pas son nom (faute de frappe ça arrive souvent)

Pour resp surtout ne change rien $resp est un objet alors que $resp->valid est l'attribut valid de l'objet $resp, si tu vires ->valid le test n'a plus du tout la même signification
avatar de Vitoutso
Membre
# Le 07/09/2010 à 20h38
Il me semblait bien l'avoir vu quelque part. Et je viens de retrouver la page de la personne qui en parle pour avoir eu un problème avec son Captcha, c'est ici

Elle supprime le ->is_valid

Qu'en pensez-vous ?
Aider son prochain c'est donner sans rien attendre en retour !
avatar de stc
Membre
# Le 07/09/2010 à 20h42
Bah je sais pas comment est codée cette routine, d'après le post $resp serait un booléen (qui peut prendre la valeur true ou false) seulement dans ce cas je ne vois pas pourquoi il y a un test de $resp->is_valid d'ailleurs ça devrait te mettre une erreur si s'était vraiment un boolean
avatar de Tony_
Administrateur
# Le 07/09/2010 à 20h52
Oula, évitons de tout modifier (le code que j'ai cité fonctionne bien, je l'utilise sur mes sites ;) ).
Il y a deux petites erreurs:

Mauvais placement du code

Le code à été mal placé (c'est ma faute, je n'ai pas assez détaillé). Voici l'endroit où il faut placer le bout de code:
  1. if(strlen($f_13)<2){
  2. $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
  3. $errf_13=1;
  4. }
  5.  
  6. require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
  7. $privatekey = "..."; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  8. $resp = recaptcha_check_answer ($privatekey,
  9. $_SERVER["REMOTE_ADDR"],
  10. $_POST["recaptcha_challenge_field"],
  11. $_POST["recaptcha_response_field"]);
  12.  
  13. if (!$resp->is_valid) {
  14. // Si le captcha n'est pas valide
  15. $erreur.="<li><span class='txterror'>Oups, le captcha antispam n'est pas valide. Veuillez recommencer</span>";
  16. $errf_14=1;
  17. }
  18.  
  19.  
  20. if($erreur==""){

En d'autres mots, il faut placer le code entre:
  1. if(strlen($f_13)<2){
  2. $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
  3. $errf_13=1;
  4. }

et ce code:
  1. if($erreur==""){


Ajout de la librairie

Il semble également que dans le code cité il manque cette ligne:
  1. require_once('recaptchalib.php');


(on va finir par y arriver :) ).
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 07/09/2010 à 21h19
Ouf....! ça y est ça fonctionne, c'est pas vrai !
Et ben je t'aurais fait souffrir avec mon formulaire...

Bien, il me reste à te féliciter pour ta patience et ton dévouement à aider les novices en PHP comme moi. Je te remercie et je vais enfin pouvoir continuer de compléter le site avec les pages manquantes.

Je vais noter le sujet comme résolu et je met le bout de code final ci-dessous pour d'autres personnes qui auraient éventuellement le même problème que moi. Comme ça ça te feras moins de boulot.

Cordialement et encore merci.

Vitoutso

***********************************************

Voici le bout de code résolu (à placer avant la balise <html>:

  1. // Verification des champs
  2. if(strlen($f_1)<2){
  3. $erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
  4. $errf_1=1;
  5. }
  6. if(strlen($f_2)<2){
  7. $erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
  8. $errf_2=1;
  9. }
  10. if(strlen($f_3)<2){
  11. $erreur.="<li><span class='txterror'>Le champ &laquo; E-mail &raquo; est vide ou incomplet.</span>";
  12. $errf_3=1;
  13. }else{
  14. if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
  15. '@'.
  16. '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
  17. '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
  18. $f_3)){
  19. $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
  20. $errf_3=1;
  21. }
  22. }
  23. if(strlen($f_4)<2){
  24. $erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.</span>";
  25. $errf_4=1;
  26. }
  27. if(strlen($f_5)<2){
  28. $erreur.="<li><span class='txterror'>Le champ &laquo; Adresse postale &raquo; est vide ou incomplet.</span>";
  29. $errf_5=1;
  30. }
  31. if(strlen($f_7)<2){
  32. $erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
  33. $errf_7=1;
  34. }
  35. if(strlen($f_8)<2){
  36. $erreur.="<li><span class='txterror'>Le champ &laquo; Ville &raquo; est vide ou incomplet.</span>";
  37. $errf_8=1;
  38. }
  39. if($f_9==0){
  40. $erreur.="<li><span class='txterror'>Le champ &laquo; Pays &raquo; n'a pas été défini.</span>";
  41. $errf_9=1;
  42. }
  43. if($f_11==0){
  44. $erreur.="<li><span class='txterror'>Le champ &laquo; Vous êtes &raquo; n'a pas été défini.</span>";
  45. $errf_11=1;
  46. }
  47. if(strlen($f_12)<2){
  48. $erreur.="<li><span class='txterror'>Le champ &laquo; Objet de votre message &raquo; est vide ou incomplet.</span>";
  49. $errf_12=1;
  50. }
  51. if(strlen($f_13)<2){
  52. $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
  53. $errf_13=1;
  54. }
  55. <strong>require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
  56. $privatekey = "clé privée"; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  57. $resp = recaptcha_check_answer ($privatekey,
  58. $_SERVER["REMOTE_ADDR"],
  59. $_POST["recaptcha_challenge_field"],
  60. $_POST["recaptcha_response_field"]);
  61.  
  62. if (!$resp->is_valid) {
  63. // Si le captcha n'est pas valide
  64. $erreur.="<li><span class='txterror'>Oups, le captcha antispam n'est pas valide. Veuillez recommencer</span>";
  65. $errf_14=1;
  66. }</strong>
  67. if($erreur==""){
  68. // Création du message
  69. $titre="Message de votre site";
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 07/09/2010 à 21h28
Aaah. Chouette. Content pour toi que tout ceci fonctionne à merveille. smiley
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 08/09/2010 à 07h56
Bonjour Funnycat,
oui c'est le top, de plus je suis vraiment content smiley car je te vois smiley heureux d'avoir pu m'aider et surtout d'y être arrivé avec beaucoup de patience smiley .
Merci encore, je n'hésiterais pas à te recommander et à revenir vers toi si besoin et si tu me le permets. smiley

Cordialement,

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
Page : 1 2