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