Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード

秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード


PHPで作った問い合わせフォームなどが、迷惑メールやハッキングツールの餌食になってしまい、荒らされてしまう事が多い昨今ですorz

このままじゃいけないと分かっていても、CAPTCHAを導入するのがめんどい・・・。

・・・できれば二行で終わらせたい!

という方のために、コピペ後に二行だけ追加すればreCAPTCHAを導入出来るサンプルコードを用意しましたw

あらかじめ、reCAPTCHAのサイトにアクセスして、サイトキーやシークレットキーを取得する必要があります。そこだけ30秒くらいかかってしまいますが、我慢して下さい。

以下、コピペ用コードです。
※ yoursitekeyとyoursecretkeyには、reCAPTCHAのサイトキーとシークレットキーを記述して下さい。

<?php
    // あらかじめ、recaptchaのサイト(https://www.google.com/recaptcha/intro/v3.html)で、サイトキーとシークレットキーを取得しておく。
    $recaptcha_site_key = "yoursitekey";
    $recaptcha_secret_key = "yoursecretkey";
    
    // recaptchaを表示する<FORM>〜</FORM>内に記述
    function recaptcha(){
        global $recaptcha_site_key;
        echo "<input type='hidden' name='recaptchaResponse' id='recaptchaResponse'><script src='https://www.google.com/recaptcha/api.js?render={$recaptcha_site_key}'></script><script>grecaptcha.ready(function(){grecaptcha.execute('{$recaptcha_site_key}', {action: 'sent'}).then(function(token){document.getElementById('recaptchaResponse').value = token;});});</script>";
    }
    // フォームが送信された後の処理 例:if(recaptcha_verify()){echo '認証成功';}else{echo '認証エラー';}
    function recaptcha_verify(){
        global $recaptcha_secret_key;
        $post_key = "recaptchaResponse";
        if(isset($_POST[$post_key]) && !empty($_POST[$post_key])){
            $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret_key."&response=".$_POST[$post_key]);
            if(json_decode($response)->success){
                return true;
            }
        }
        return false;
    }
?>


使い方の例:
前述のコードをコピペした後で、赤字の箇所を、従来のPHPコードに追加すればおk。
<?php
if($_POST){
if(recaptcha_verify()){
echo '送信成功';exit;
}else{
echo '送信失敗';exit;
}
}
?>
<form method='post'>
<input type='text' name='name'>
<?php recaptcha()?>
<input type='submit' value='送信'>
</form>


・・・秒速とか言いながら、スムーズに事が運んでも1分くらいはかかるかも(ぉぃ)

なお、reCAPTCHA v3は、従来のようなグニャグニャした画像認証は表示されません。
フォームを送信した時のスコアに応じて、承認するか否かを自動判断しているので、
上記のコードを導入したからと言って、フォームの見栄えには全く影響を及ぼしませんのでご注意を。


この記事の最終更新日:2019/10/24
最初に記事を書いた日:2019/10/24

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード