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>
に修正。
「かきこむ」はどこで使われているんだろう