Google reCAPTCHAを静的サイトで利用時のカスタマイズ
プライベート運用している静的サイトでお問合せフォームを設置しているんですが、当方では以前からPHP工房さんのMailForm01を利用させていただいています。使い勝手がとても良くて、説明通りに設定すればスパム対策もしてくれる優れものです。
ただ送信確認画面を表示させる設定にしないとスパム対策が有効になりません。
このひと手間が微妙でして、「送信」ボタンをクリックしたらそのまま送信としたいのでGoogle reCAPTCHAを導入することに。
PHP工房さんのプログラムはGoogle reCAPTCHAの利用は想定していないので当然なんですが、reCAPTCHA利用の際にform内に設置する以下のタグ、
<input type="hidden" name="recaptcha_response" id="recaptcha_response" />
この部分で受け取る値(ランダムな文字列)もメール受信してしまうので、これを受け取らないようにする方法を覚書。
mail.phpの
//送信メールにPOSTデータをセットする関数
部分でrecaptcha_responseを除外するように設定。
if($hankaku == 1){
$out = zenkaku2hankaku($key,$out,$hankaku_array);
}
if($out != "confirm_submit" && $key != "httpReferer" ) {
$resArray .= "【 ".h($key)." 】 ".h($out)."\n";
}
}
ここの$out !=のところに除外項目
$key != "recaptcha_response"
を追加する。
if($hankaku == 1){
$out = zenkaku2hankaku($key,$out,$hankaku_array);
}
if($out != "submit" && $key != "httpReferer" && $key != "recaptcha_response") {
$resArray .= "【 ".h($key)." 】 ".h($out)."\n";
}
}
“confirm_submit”のところは確認画面の表示はしないので”submit”に変更しています。
これでお問合せ内容の必要項目のみ受け取れます。
ただ、送信確認画面の表示があっても特に問題ないとか、むしろあった方が良いという場合はせっかくPHP工房さんの方でワンタイムトークンによるスパム対策をしてくれているのでそのまま使いましょう。
ここでは触れてませんがGoogle reCAPTCHAの設定もそれなりに手間かかりますから。