利用開始の為の設定
https://developers.google.com/recaptcha/
利用するウェブサイトのアドレス登録等と使用する2個のキーを取得する
- ウェブサイトのフォームに埋め込むキー
- サーバー側で使用する秘密キー
下記のウェブサイトを参考に設置します
https://jpn.itlibra.com/article?id=20882
ウェブフォーム
ウェブフォームが表示されたら “grecaptcha.ready()” が実行されて
フォーム要素に token (ここでは、”g-recaptcha-response”) に値が埋め込まれるようにする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<form action="." method="post" name="form1"> <!-- form items... --> <input type="submit" name="send" value="Send" /> <!-- reCAPTCHA v3 --> <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response" value="" /> <?php $site_key = 'MY-SITE-KEY'; ?> <script src="https://www.google.com/recaptcha/api.js?render=<?php echo $site_key; ?>"></script> <script> grecaptcha.ready(function() { grecaptcha.execute("<?php echo $site_key; ?>", {action: 'homepage'}).then(function(token) { document.getElementById('g-recaptcha-response').value=token; return false; }); }); </script> </form> |
サーバー側 PHP
フォームに埋め込まれた token “g-recaptcha-response” を受信し
“file_get_contents()” でリクエストを送信して結果を受け取る
“score” 値でロボットかどうか判定する
“googleRecaptchaV3()” をリクエスト処理の中で呼び出す
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // google recaptcha v3 function googleRecaptchaV3() { // $secretKey = 'SERVERSIDE-SECRET-KEY'; $gRecaptchaResponse = $_POST["g-recaptcha-response"]; // $gRecaptchaResponse = get('g-recaptcha-response'); // sanitize $reCaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$gRecaptchaResponse; $response = @file_get_contents($reCaptchaUrl); $response = json_decode($response,true); if ($response['success'] != true or $response['score'] < 0.5 ){ // is robot? exit; } } |