Suffit décrire captchas correctement et plus d'erreur...
Bonjour,
Voila je rencontre un petit problème avec mon code.
Ce que je fais
Décrivez ici votre code ou ce que vous cherchez à faire
Je cherche à installer un Recaptcha dans un framework en MVC. Le problème c'est que ne parviens pas à envoyer à la vue le résultat de la fonction qui controle la réponse. J'ai bien suivi le tuto de grafikart sur le sujet mais celui-ci, bien qu'en pdo, ne traite pas le problème façon mvc. J'ai donc essayer de l'adapter.
J'ai mis ma variable captcha dans mon controller principal.
Voici le code de mon Sendscontroller qui intègre à la fois le contrôle du formulaire et le contrôle du recaptcha (celui correspond environ pour les élements principaux à la 16ème minute du tuto de Grafikart - là ou je bloque) :
Voici le code de la vue
Ce que je veux
Je bloque, apparemment, au niveau du renvoi à la vue de la réponse. Ci-après le code de l'erreur
Ce que j'obtiens
J'attends un booleen (true ou false) mais j'ai ceci en erreurs:
Merci pour votre aide. J'ai beaucoup cherché mais je n'y arrive pas.
28 réponses
Bonjour Fital, tu as raison pour captchas mais j'ai toujours les deux autres erreurs.
Bah pour ton erreur ligne 70, tu utilise $captcha dans une fonction mais tu ne le passe pas en paramètre. C'est normale d'avoir cette erreur du coup.
Corrige déjà tout tes catpchas au lieu de captchas et reposte ton code + messages d'erreurs on y verra plus clair :)
Bonjour,
La première erreur t'indique que la variable "$captcha" n'existe pas dans ton controlleur.
La deuxième erreur indique que tu ne peux pas appeler la function isValid sur un élément non objet, évidement la première erreur te signale que la variable n'existe pas.
J'ai remplacé "captchas" par "reply" pour limiter la confusion. Voici le code de SendsController:
et ma vue:
Les messages d'erreurs:
Bonjour Krysenn
J'ai placé la variable $captcha dans mon controlleur principal (parce que j'avais justement toujours la même erreur et d'ailleurs rien n'y a fait).
Cette variable contient le code secret qui est donné par google.
Je l'ai enregistré de la façon suivante :
public $captcha = '**' ;
Je crois que le problème vient du fait que la variable commence par une valeur numérique et qui, ainsi, ne pourrait devenir un objet.
Sympa, plus personne !!!!
Salut,
Dans la fonction "recaptcha" on te dis que la variable "$captcha" n'existe pas.....
bah oui j'ai compris Carouge. Comme je l'ai expliqué la variable que j'ai initialisé commence par une valeur numérique et je crois que c'est cela le problème. Si tu sais comment régler ce problème, j'ai vraiment beaucoup chercher.
J'insiste.... car tu ne peux initialisé une variable qui n'existe pas.
C'est un peu comme si je te mettais en plein milieu d'un champ et que je te demandais de rentrer dans la maison juste devant toi.
Indice : Lis bien le "return" de la fonction "recaptcha".
Désolé de ne pas avoir répondu vite mais j'analisais ta réponse. Vraiment je ne vois pas, j'ai essayé ceci, mais bon... (il n'y a pas la variable qui passe en paramètre.
function recaptcha(){
if(!empty($_POST)){
return->$this->isValid($_POST['g-recaptcha-response']);
}
}
pardon
function recaptcha(){
if(!empty($_POST)){
return $this->$captcha->isValid($_POST['g-recaptcha-response']);
}
}
mais maintenant cette erreur
Ca fait 4 js que je bosse dessus, aidez moi.
Mais pourquoi vouloir mettre $captcha ?
Tout simplement :
Ca me parait évident, c'est pour demander à la fonction isValid de tester la valeur secrète. Je retape mon code et je dis ds 5 mns parce que j'avais essayer autre chose.
Il y a du mieux, c'est à dire que je chope le booleen mais il est toujours à false alors qu'il devrait être à true quand je valide le captcha et envoi le formulaire.
J'ai passé en paramètre de la fonction recaptcha le code secret:
function recaptcha($captcha='*****')
pour le reste il te faut debugguer ligne par ligne et comparer au résultat que tu attends afin de déterminer d'où viens l'erreur
merci Carouge. Si tu veux on se retrouvera sur ce fil, je posterais demain pour dire où j'en suis. Bonne nuit à toi.
Merci, également.
Bon, ça marche en ligne mais pas en local, alors on dira, sous toute réserve, que ça marche. Merci Carouge.
Mais pourquoi cela ne marche pas en ligne. Quel erreur est rétourné ? Que dises les logs ?
ça marche en ligne, et ça ne marche pas en local.
franchement je sais pas, j'ai pourtant le même code. Quand je clique sur ma page de contact, j'ai cette erreur :
Bizarre
D'accord,
Peux-tu me donner les lignes 14-15-16 de ta vue ?
<?php
var_dump($_POST);
var_dump($reply);
?>
J'ai réessayé ça fonctionne.
oui il suffit de regarder l'erreur et chercher la la ligne indiqué ou la précédente.
Problème résolu
Yes,
La résolution de mon prochain problème sera de faire des sous catégories. Je me suis cogner la tête tout le mois de juillet sans y arriver. Mais j'ai compris le principe. Je posterais un sujet dessus prochainement. Bien à toi.