IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

reCaptcha retourne "invalid-request-cookie"


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut reCaptcha retourne "invalid-request-cookie"
    Bonjour à tous,

    J'ai un soucis avec la librairie reCaptcha:

    Tout d'abord sur ma première page ("register1.php"), aucun soucis, le captcha fonctionne bien, et la vérification ("verif.php") est Ok.

    Pourtant, si je passe par ma seconde page ("register2.php" - page spéciale pour offre promo), mal grès que le script de vérification soit le même ("verif.php"), celui-ci me retourne toujours la même erreur: "invalid-request-cookie"

    D'après la documentation, il s’agirait du champs "challenge" qui est mal renseigné... et pourtant, dans mon dernier test encore, sur la page de "register2.php" je récupère bien le "challenge id", et celui ci est correctement envoyé à mon script "verif.php" en post. Et les datas envoyés au script de vérification de google sont les mêmes que pour mon register1.php, à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    privatekey=[**private-key**]&remoteip=[**remote-addr**]&challenge=03AHJ_Vuus555tyU9v1hoQrZ3PePNMB1CAhkR5VG0yIvodEd1_K6LymD1gece9PCixCSB8jdA7mWGuMyXMApikpqDs1e03vOvO17Wn2CVkDa1FYglZD3poLFDrJ0AIVeo0k14lakt1wQfM1H_K-bCS-iEEPNjDbHmEGindviUsmw4gvvGZZ6HRW1c&response=but requama"
    Dans firebug, lorsque je regarde dans l'onglet réseaux, c'est bien le challenge id que j'avais sur ma page de formulaire (et celui-ci me permet d'ailleurs d'actualiser le captcha sans problème).

    Pourtant, la réponse est toujours la même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { [0]=> string(5) "false" [1]=> string(22) "invalid-request-cookie" }
    J'ai déjà fait tout le tour de tout les sujets des 5 premières pages google à ce sujet, et n'ai toujours trouvé aucune solution :'(
    Tout ce que j'ai pu trouver sont des solutions qui ne me concerne pas, comme par exemple, une différence d'appel du nom de domaine ("http:// et https://" ou "http://domaine.com" et "http://www.domaine.com"), mais cela n'est pas mon cas.


    Ressources:

    Voici mon code de vérification au cas ou cela pourrait servir (bien que je ne pense pas puisque celui ci fonctionne avec la première page):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    if(!empty($post['challenge']) && !empty($post['response']))
          {
              $data = 'privatekey='.RECAPTCHA_PRIVATE_KEY.'&remoteip='.$_SERVER["REMOTE_ADDR"]."&challenge=".$post['challenge']."&response=".$post['response'];
              var_dump($data);
     
              $curl = curl_init();
              curl_setopt($curl, CURLOPT_URL, "http://www.google.com/recaptcha/api/verify");
              curl_setopt($curl, CURLOPT_VERBOSE, 0);
              curl_setopt($curl, CURLOPT_HEADER, 0);
              curl_setopt($curl, CURLOPT_POST, 1);
              curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
              $reponse = curl_exec($curl);
              curl_close($curl);
              $resultat = explode("\n",$reponse);
              if($resultat[0] != 'true')
              {
                  var_dump($resultat);
                  die("buggué");
                  $session->addError('Captcha incorrect');
                  $this->_redirectUrl($_SERVER['HTTP_REFERER'].'?error='.$resultat[1]);
                  return;
              }
              die("passé");

    Et la source (épurée) de ma page sur laquelle la verification ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
    	<script type="text/javascript" src="/js/default/register-form.js"></script>
            <script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
        </head>
     
        <body class="landing-index-index">
            <div id="container">
                <section id="content">
                    <div id="fb-root"></div>
                    <div id="page" class="landing">
                        <div class="landing_registration right">
                            <form id="registration"  autocomplete="off" action="register/registry/type/1/" method="post">
                                <ul>
                                    <li>
                                        <div id="recaptcha_div" style="float:right;"></div>
                                        <script>
                                            $j(document).ready(function(){
                                                showRecaptcha('recaptcha_div');
                                            });
                                        </script>
                                        <input type="hidden" name="challenge" value="0" id="challenge" />
                                        <input type="hidden" name="response" value="0" id="response" />
                                    </li>
     
                                    <li class="space"></li>
                                    <li>
                                        <div class="registration_content">
                                            <input name="registration" type="submit" onClick="$j('#challenge').val(Recaptcha.get_challenge());$j('#response').val(Recaptcha.get_response());" value="" />
                                        </div>
                                    </li>
                                </ul>
                            </form>
                        </div>
                    </div>
                </section>
            </div>
        </body>
    </html>
    (les onClick du boutons submit servent à donner les bonnes valeurs au champs "challenge" et "response", utilisé dans le script de vérification à la place de "recaptcha_challenge_field" et de "recaptcha_response_field" (ne me demandez pas pourquoi, je reprends le travail de quelqu'un d'autre ^^ - mais en tout cas ça fonctionne)

    Et, pour finir, ma petite fonction JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function showRecaptcha(element) {
        Recaptcha.create(
                "*pub-key*",
                element,
                {
                    theme: "blackglass",
                    callback: Recaptcha.focus_response_field
                }
        );
    }

    Des idées ? Des pistes ?
    Help plz !

  2. #2
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Alors pour ceux que ça intéresse j'ai pu trouver le problème, ma pubkey et privatekey n'étaient pas les bonnes (la pubkey du site de preprod avec la private key de prod), donc un petite erreur bête de cop-col.

    Mais bon, au vu de la documentation c'était pas facile à trouver, puisqu'il ne s'agit pas du tout du challenge qui est mal renseigné.


    Allez, et merci hein

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/10/2005, 18h59
  2. Oracle 7 -> Oracle 8 : "Invalid Row Id"
    Par gmartintin dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/10/2004, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo