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フィールドを認識せず、そのデータをファイルに転送しません。誰がどのデータを転送するのかを決定する必要があります。
hm、おそらく '$ reCaptchaResponse = Tools :: getValue( 'g-recaptcha-response');'を試してみてください。 - また、APIキーを難読化してください! – defuzed
いいえ、それは動作しませんでした。詳細はオリジナルの投稿をご覧ください。 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
したたとえば、開発ツールのネットワークタブで、フォームを送信するときに 'g-recaptcha-response'がポストされていることを確認しますか? - 私の悪い、テストキーについて知りませんでした – defuzed