Posted at

GoogleのreCAPTCHAをPHPで使う

More than 3 years have passed since last update.


目的

Googleが提供している新しいreCAPTCHAAPIを使ってみる。

https://www.google.com/recaptcha/intro/index.html


Site key/SecretKey発行

管理画面にアクセスしてSite key/SecretKeyを発行する

https://www.google.com/recaptcha/admin

Label:なんでも良さげ

Domains:使用するサイトのドメイン。1行1ドメイン。


クライアントサイド

javascriptを読み込み

<script src='https://www.google.com/recaptcha/api.js'></script>

HTML記述

<div class="g-recaptcha" data-sitekey="{{SITEKEY}}"></div>


サーバサイド

GoogleAPIに対してリクエストを発行します。


recaptcha.php

$url = 'https://www.google.com/recaptcha/api/siteverify';

$data = array(
'secret' => '{{SECRETKEY}}',
'response' => $_REQUEST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR'],
);
$url .= '?' . http_build_query($data);
$header = Array(
'Content-Type: application/x-www-form-urlencoded',
);
$options = array('http' =>
array(
'method' => 'GET',
'header' => implode("\r\n", $header),
'ignore_errors' => true
)
);
$apiResponse = file_get_contents($url, false, stream_context_create($options));
$jsonData = json_decode($apiResponse, TRUE);
if($jsonData['success'] !== TRUE){
echo '失敗した';
}


まとめ

簡単にCAPTCHAが実装できます。

さらに、正規ユーザが読めない文字を解読する必要がないのでいいと思います。