googleのreCAPTCHAをphp製の掲示板に組み込むメモ。
https://syncer.jp/how-to-introduction-recaptcha
をかなり参考にさせていただいた。
reCAPTCHAのSite keyとSecret keyを
https://developers.google.com/recaptcha/docs/start
の「Create an API Key」から取得する。
次にreCAPTCHAを一例として「2chみたいな掲示板」 に組み込むことを考える。
http://www.mits-jp.com/2ch/
からダウンロードし、index.txtのの直前に
<script src='https://www.google.com/recaptcha/api.js'></script>
を追加。
form.txtの
<
form>タグ内のreCAPTCHAを表示したい位置に
<div class="g-recaptcha" data-sitekey="{取得したSite key}"></div>
を加える。
bbs.phpの#POST情報の下あたりにこんな感じ。
#POST情報 if ($_POST['submit'] != "書き込む" and $_POST['submit'] != "新規スレッド作成" and $_POST['submit'] != "かきこむ" and $_POST['submit'] != "上記全てを承諾して書き込む") { DispError("ERROR!","ERROR:ユーザー設定が消失しています!"); } #CAPTCHA if ($_POST['submit'] == "書き込む" or $_POST['submit'] == "新規スレッド作成" and $_POST['submit'] != "かきこむ" and $_POST['submit'] != "上記全てを承諾して書き込む") { if( !isset( $_POST['g-recaptcha-response'] ) ) { DispError("ERROR!","ERROR:キャプチャが失敗しています!reCAPTCHAをクリックしてください!"); }else{ // シークレットキー $secret_key = '"{取得したSecret key}"' ; // エンドポイント $endpoint = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response'] ; // 判定結果の取得 $curl = curl_init() ; curl_setopt( $curl , CURLOPT_URL , $endpoint ) ; curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ; // 証明書の検証を行わない curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ; // curl_execの結果を文字列で返す curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ; // タイムアウトの秒数 $captcha_return = curl_exec( $curl ) ; curl_close( $curl ) ; // JSONの出力を明示 header( 'Content-Type: application/json; charset=utf-8' ) ; // 結果の出力 $json =json_decode($captcha_return,true); if($json['success']==false){ DispError("ERROR!","ERROR:キャプチャミス!"); } } }
new_thread.phpのタグの前に
<script src='https://www.google.com/recaptcha/api.js'></script>
を追加し、
<tr><td nowrap align="right">タイトル:</td><td><input type="text" name="subject" size="40"></td><td><input type="submit" value="新規スレッド作成" name="submit"></td></tr>
の部分を
<tr><td nowrap align="right">タイトル:</td><td><input type="text" name="subject" size="40"></td><td><div class="g-recaptcha" data-sitekey="{取得したSite key}"></div><input type="submit" value="新規スレッド作成" name="submit"></td></tr>
に修正。
「かきこむ」はどこで使われているんだろう