🚧

reCAPTCHA v3を使ったフォーム作成

2024/10/10に公開

あっているか分かりませんが、、、これで実装できたので同じく困っている人の参考になれば嬉しいです。
修正箇所があればコメントで教えてほしいです。

  • php
  • reCAPTCHA v3

入力画面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- idはdocument.getElementById("submit").submit();と揃えてください -->
    <form action="form-output.php" method="POST" id="submit">
        <script src="https://www.google.com/recaptcha/api.js"></script>
        <button class="g-recaptcha"
            data-sitekey="サイトキー"
            data-callback='onSubmit'
            data-action='submit'
            type="submit">Submit</button>
        <script>
            // この関数はreCAPTCHAのトークンが生成されたときに呼び出されます
            function onSubmit(token) {
                document.getElementById("submit").submit();
            }
        </script>
    </form>
</body>
</html>

結果

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $recaptcha = $_POST['g-recaptcha-response'];
        $secretKey = "シークレットキー";
        $url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$recaptcha";
        $response = file_get_contents($url);
        $result = json_decode($response, true);
        if($result['success'] !== true) {
            echo "reCAPTCHAの検証に失敗しました。";
        } else {
            echo "reCAPTCHAの検証に成功しました。";
        }
    }

Discussion