2016-05-11 20 views
2

prestashopのopc登録ページにgoogle reCaptchaを追加しようとしていますが、チェックボックスの設定がありますが、phpファイルがcaptchaレスポンスを受信して​​いません。私に説明させてください。ここで私はこれまで何をやったかです:私のheader.tplで、私は順序-OPC-新account.tplでPrestashop - AuthController.phpが入力値を受け取っていません

<script src='https://www.google.com/recaptcha/api.js'></script> 

を追加し、私は私のAuthController.phpで

<div class="g-recaptcha" data-sitekey="[my_public_key]"></div> 

を追加私が追加しました

if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount')) //if statement was already present 
{ 
    // captcha code I added 
    $reCaptchaUrl='https://www.google.com/recaptcha/api/siteverify'; 
    $reCaptchaSecret = '[my_secret_key]'; 
    $reCaptchaResponse = $_POST['g-recaptcha-response']; 
    $ip = $_SERVER['REMOTE_ADDR']; 

    $verifyCaptcha = file_get_contents($reCaptchaUrl."?secret=".$reCaptchaSecret."&response=".$reCaptchaResponse."&remoteip=".$ip); 
    $captchaReply = json_decode($verifyCaptcha); 

    if(isset($captchaReply->success) AND $captchaReply->success == true){ 
     $logger = new FileLogger(0); 
     $logger->setFilename(_PS_ROOT_DIR_."/log/debug.log"); 
     $logger->logDebug("Captcha was successful: ".$reCaptchaResponse); 
    } else { 
     //captcha failed 
     $logger = new FileLogger(0); 
     $logger->setFilename(_PS_ROOT_DIR_."/log/debug.log"); 
     $logger->logDebug("Captcha failed: ".$reCaptchaResponse); 
    } 

    // ... prestashop registration code 
} 

私は$reCaptchaResponse変数が実際にキャプチャが確認された場合でも、空のたびに来ているデバッグメッセージを学びました。なぜどんなアイデア?

編集:フォームは実際に私の推測では、AuthController.phpにコードのこの作品は、転送フォームデータということですが、それが唯一の転送フィールドその次の行を有しているauthentication.php

require(dirname(__FILE__).'/config/config.inc.php'); 
ControllerFactory::getController('AuthController')->run(); 

をデータを送信しますそれは転送するように言われています。新しいrecaptchaフィールドを認識せず、そのデータをファイルに転送しません。誰がどのデータを転送するのかを決定する必要があります。

+0

hm、おそらく '$ reCaptchaResponse = Tools :: getValue( 'g-recaptcha-response');'を試してみてください。 - また、APIキーを難読化してください! – defuzed

+0

いいえ、それは動作しませんでした。詳細はオリジナルの投稿をご覧ください。 BTWは公開されたテスト用のため、私はそれらを隠していませんでした。 [Googe Dev Guide](https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha-v2-what-should-i-do) – VeeK

+0

したたとえば、開発ツールのネットワークタブで、フォームを送信するときに 'g-recaptcha-response'がポストされていることを確認しますか? - 私の悪い、テストキーについて知りませんでした – defuzed

答えて

2

<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>がFORM要素にあることを確認してください。

+0

はい、それはフォーム要素にあります。私の最高の推測はAuthController doesnnotデータを直接取得するので、私はこの新しいフィールドを受け取りません – VeeK

関連する問題