1. ホーム
  2. servlets

[解決済み] Google Recaptcha v3 のサンプルデモ

2023-05-06 12:46:11

質問

これまでGoogle Recaptcha v2を使用していましたが、最新版(v3)を使用してWebアプリケーションを更新したいと思います。

Google Recaptcha v3のデモが見つからないので、どなたか基本的なフォームで完全に動作する例を追加することは可能でしょうか?

本当にありがとうございます。

ありがとうございました。

追記:サーバーサイドにJava Servletを使用していますが、PHPで説明してもらっても問題ないです。

どのように解決するのですか?

ReCaptcha v3 を実装するためのシンプルなコード

基本的なJSのコード

<script src="https://www.google.com/recaptcha/api.js?render=your reCAPTCHA site key here"></script>
<script>
    grecaptcha.ready(function() {
    // do request for recaptcha token
    // response is promise with passed token
        grecaptcha.execute('your reCAPTCHA site key here', {action:'validate_captcha'})
                  .then(function(token) {
            // add token value to form
            document.getElementById('g-recaptcha-response').value = token;
        });
    });
</script>

基本的なHTMLコード

<form id="form_id" method="post" action="your_action.php">
    <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
    <input type="hidden" name="action" value="validate_captcha">
    .... your fields
</form>

基本的なPHPのコード

if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
} else {
    $captcha = false;
}

if (!$captcha) {
    //Do something with error
} else {
    $secret   = 'Your secret key here';
    $response = file_get_contents(
        "https://www.google.com/recaptcha/api/siteverify?secret=" . $secret . "&response=" . $captcha . "&remoteip=" . $_SERVER['REMOTE_ADDR']
    );
    // use json_decode to extract json response
    $response = json_decode($response);

    if ($response->success === false) {
        //Do something with error
    }
}

//... The Captcha is valid you can continue with the rest of your code
//... Add code to filter access using $response . score
if ($response->success==true && $response->score <= 0.5) {
    //Do something to denied access
}

レスポンススコアの値を使って、アクセスをフィルタリングする必要があります。0.0から1.0までの値を取ることができ、1.0はあなたのサイトでの最高のユーザーとの対話を意味し、0.0は最悪の対話(ボットのように)です。使用例として ReCaptchaのドキュメント .