reCAPTCHAを「2chみたいな掲示板」(php製)に組み込む

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>

に修正。

「かきこむ」はどこで使われているんだろう

シェアする

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

フォローする