0

recaptchaはローカル マシンで検証されているようですが、ライブ サイトにアップロードすると常に失敗します。回答/応答オブジェクトをダンプしました。次のようになります。

ReCaptchaResponse::__set_state(array(
   'is_valid' => false,
   'error' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"',
))

その中にHTMLがあります!何が起こっているのですか、なぜこれが失敗するのですか?

変数もダンプ$_POSTしました。次のようになります。

array (
  *snip*
  'recaptcha_challenge_field' => '03AHJ_VuvqpAkJnmfOZHHf80EPt85lVEeq9IRuO9zw1jZ1fzUk-_DAw0z2k3-TeXzAXQVXUWChyCGnC1RoXRPly4Ldz0FugPKW_WKWEoKysNLnpcv2xvyWONpq0VDV3ipsy5Vukui0zxlSqiBBWw00VYPSkO52OqMv_A',
  'recaptcha_response_field' => 'uterf sw',
)

検証コード:

$recaptcha_answer = recaptcha_check_answer('MY_PRIVATE_KEY_HERE', $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'],  $_POST['recaptcha_response_field']);

if(!$recaptcha_answer->is_valid) {
    $validation_errors[] = 'The reCAPTCHA you entered was not correct';
    echo '<!-- '.var_export($recaptcha_answer,true).var_export($_POST,true).' -->';
}

表示コード:

<?= recaptcha_get_html('MY_PUBLIC_KEY_HERE') ?>

recaptcha テキストボックスを空のままにしてフォームを送信すると、適切なエラー メッセージが表示されます。

不正確なキャプチャ ソル

しかし、入力すると、常にその doctype が表示されます...私が使用している doctype ではないことに気付きました。トランジショナルではなく、厳密なドキュメントタイプを使用する必要があると私に伝えようとしていますか?


違いがある場合は、「クリーン」テーマを使用しています。

<script type="text/javascript">
    var RecaptchaOptions = {
        theme : 'clean'
    };
</script>

「赤」のものは正しく表示されません。テキストボックスがずれています。


図書室をのぞいてみました。という方法があり_recaptcha_http_postます。fsockopen検証サーバーにリクエストを送信するために使用します。発信リクエストは次のようになります。

POST /recaptcha/api/verify HTTP/1.0
Host: www.google.com
Content-Type: application/x-www-form-urlencoded;
Content-Length: 272
User-Agent: reCAPTCHA/PHP

privatekey=<<MY INFO HERE>>&amp;challenge=<<BLAH>>...

しかし、返された応答は、Google からのもののようには見えません。「アクセス禁止!」です。ページ。何かがそれを傍受しているのではないかと思います...

4

1 に答える 1

0

問題が見つかりました。Google からの応答が返ってこなかったので、IP を調べてみました。

echo 'www.google.com: '. gethostbyname('www.google.com').'<br/>';
echo '<offending site>: '. gethostbyname('<offending site>');

これを自分のサーバーで実行しても同じです。誰かがホスト ルックアップを台無しにしました。うーん!

于 2012-08-11T22:14:37.963 に答える