私は reCaptcha を Web サイトに統合したかったのですが、それが機能していることについて少し混乱していました。
設定方法は次のとおりです。
このコードを頭に追加しました:
<script src='https://www.google.com/recaptcha/api.js?render=SITE_KEY></script>
ページの読み込み時にこのコードを使用して、reCaptcha 応答を取得しました
<script>
grecaptcha.ready(function() {
grecaptcha.execute('SITE_KEY', {action: 'register'})
.then(function(token) {
jQuery('#recaptcha').val(token);
});
});
</script>
このコードを使用してキャプチャ応答を確認します
$secret = 'SECRET_KEY'; $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['recaptcha']); $responseData = json_decode($verifyResponse); if($responseData->success){ //valid response, move forward }else{ //captcha check failed, throw an error }
私にとってはうまく機能しているようで、リクエストに対して 0.9 のスコアを獲得しています。
問題: 有効なユーザー リクエストに対してキャプチャが何らかの理由で失敗したと仮定します (IP がスパムに使用された、またはその他の Google 検証チェックが失敗したなど)。ただし、ユーザーは正当であるため、次のようになります。
- ユーザーは自分の人間性をどのように証明できますか? (以前のチェックボックス バージョンと同様)
- ユーザーが登録フォームを読み込んで他のアクティビティに行くと、ユーザーはしばらくしてから戻ってきました (例: 10 分)。ユーザーがフォームを送信しようとすると、キャプチャ チェックが失敗します。(これを試してみたところ、「タイムアウトまたは重複」というエラーが返されました)
- ページをリロードせずにキャプチャをリロードする方法はありますか?
これらの問題を克服する方法を教えてください。