メニュー

東京・小金井市のWEB制作会社の豆知識

MEMORANDUM

PHPを使用してメールフォームにgoogleの「reCAPTCHA v3」を実装

迷惑メールが増えてきたので、メールフォームに「reCAPTCHA v3」を設置したいとの相談を受けた際にPHPを使用して実装した手順をメモ。

Google「reCAPTCHA v3」に登録

まずはGoogle reCAPTCHAのサイト情報の登録画面にアクセスし、必要情報を入力。
送信ボタンを押した後に表示される「サイトキー」と「シークレットキー」を取得します。
※登録にはgoogleアカウントが必要です。

入力項目入力内容
ラベル管理用の任意の文字列を入力
reCAPTCHAタイプ「スコアベース(v3)」を選択
ドメインreCAPTCHA v3を使うサイトのドメインを入力

Google reCAPTCHA v3をサイトに設置

メールフォームの設置されてるページに「reCAPTCHA v3」用のjavascriptとinputタグを設置します。

HTML

<script src="https://www.google.com/recaptcha/api.js?render=サイトキー"></script>
<script>
grecaptcha.ready(function () {
	grecaptcha.execute('サイトキー', { action: 'submit' }).then(function (token) {
		document.getElementById('recaptcha_response').value = token;
	});
});
</script>

<form action="sendmail.php" method="post">

<!-- reCAPTCHA v3 用タグ -->
<input type="hidden" name="recaptcha_response" id="recaptcha_response">
<!-- reCAPTCHA v3 用タグ -->

<dl>
<dt>お名前</dt>
<dd><input type="text" name="name"></dd>
<dt>メールアドレス</dt>
<dd><input type="text" name="email"></dd>
<dt>電話番号</dt>
<dd><input type="text" name="tel"></dd>
<dt>お問い合わせの内容</dt>
<dd>
<textarea name="content"></textarea></dd>
</dl>
<div><input type="submit" name="submit" value="入力内容を確認する"></div>
</form>

PHP(sendmail.php)

if(!empty($_POST['submit'])){
	
	$secret_key = 'シークレットキー';
	if(isset($_POST['recaptcha_response'])) {
		$token = $_POST['recaptcha_response'];
	}else{
		$token = '';
	}
	$remote_ip = $_SERVER['REMOTE_ADDR'];

	// トークンをGoogleに検証依頼
	$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret_key}&response={$token}&remoteip={$remote_ip}");
	$result = json_decode($response, true);
	
	// スコアのしきい値(例:0.5以上で人間と判断)
	if ($result["success"] && $result["score"] >= 0.5) {
		// 通過処理 ここにメール送信処理などを記述
	} else {
		// botまたは不正なアクセスと判断 停止処理などを記述
	}
}

「reCAPTCHA v3」を利用する際の注意事項

「reCAPTCHA v3」の利用には費用が必要となります。
月間1万アクセスまでであれば無料で利用ができますが、以降は利用した量に応じて費用が請求されます。多くの中小企業サイトであれば無料枠内で問題なく運用は可能かと思いますが、運用してみたら想定外の費用が必要になった、という事のないよう、アクセス解析等を確認しながら、どの程度の費用が必要となるかを事前に確認しておくのが良いです。

ワードプレスを使用している場合はプラグインを使うことでより簡単に実装ができるようです。

RANKING

人気記事

同一カテゴリーの記事