GoogleのreCAPTCHAをPHPで使う

  • 20
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

目的

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が実装できます。
さらに、正規ユーザが読めない文字を解読する必要がないのでいいと思います。