お問い合わせフォームならWordPressで使えるContactForm7が人気だし、reCAPTCHA v3 にも対応しているので私もよく使っています。ただ時々、細かい事をしようとして不便な場面があったり、そもそもWordPressではない時もあったりで、そんな時に使わせてもらっているのがPHP工房さんの「【MailForm01】PHP多機能メールフォーム フリー(無料)版」。
https://www.php-factory.net/mail/01.php
基本機能がしっかりしていて「余計なお世話」な余分なところも無いシンプルさでめちゃくちゃお気に入りなんですが、今のところは残念ながらreCAPTCHAには対応していません。このところスパムメールの激しさでreCAPTCHAが必須な感じになってきたので、カスタマイズして実装してみました。
いちおう「ご利用規約」をチェックすると、「改変等は自由ですが、自己責任でお願いします。」とのこと。ただし「プログラム自体の再販は禁止」で「設置費用として(クライアントへ)請求するのは問題ありません」という事なので、クライアントワークの場合はちょっと取扱いに気を使う必要あり。製作者さんへのリスペクトを忘れずにね。
設置方法の手順と考え方
最初にお断りしておきますが、前提知識の無い方に実装できるような親切な書き方はせず、ざっと流れを提示するにとどめています。自分ではできないが、どうしてもこれを実装したい場合はMailForm01配布元のPHP工房さんが各種カスタマイズを請け負っておられるようなので、このページを示して依頼するとスムーズと思います。
-----
さて、まずはreCAPTCHAの「サイトキー」「シークレットキー」を取得する必要があります。下記から進んでごにょごにょして取得してください。
https://www.google.com/recaptcha/admin/create?hl=ja
以前は完全無料でしたが、今は評価数が月間1万回を超えると有料となります。1万回を超えない場合でも、登録の際にクレジットカードなども必要となるので、クライアントワークの場合はお客様に取得してもらうと良いでしょう。
細かい取得方法はここでは省きます。
-----
参考ページ:「reCAPTCHA v3 を5分で実装」(WEB担当者の備忘録)
https://liapoc.com/recaptcha-v3.html
※reCAPTCHAのキー取得の仕方もここに詳しく解説してあります。
上記ページを参考に、MailForm01にソースを仕込んでいきます。
-----
下記の2点は、MailForm01の確認画面のHTMLの箇所に仕込んでいきます。
HTMLの知識があり、jQueryなどの実装経験があれば簡単だと思います。
- フォーム内にhiddenを追加
- reCAPTCHAのトークンを取得するためのJavaScript追加
-----
下記は、MailForm01の冒頭付近、各種設定をするあたりに入れます。
- サーバー側での処理
そして「成功時の処理」「失敗時の処理」として、適当な変数でフラッグを作っておきます。ここで処理を書くと、確認画面が表示される前に失敗時の処理が動いてしまうので(笑)
-----
最後に、確認画面を表示して問題無くメール発送する処理をするあたりを探し、そこに「認証失敗だったら処理を止める」みたいな分岐処理を入れればOKです。
「認証に失敗しました」みたいなページを作ってそこに飛ばせばなお親切でしょう。
なお、動作検証時に「認証失敗」をどうやって再現するかは一工夫必要です。ただ、このページのような簡単な説明で実装できる人であれば、自分なりに再現できると思うので解説を省きます(笑)
----------
いかがでしょう?「MailForm01」は1ファイルで完結するシンプルでスマートな作りなので、必要な箇所を探すのも知識のある方なら簡単だと思います。
最後に、このプログラムを配布してくださっているPHP工房様と、reCAPTCHA v3実装方法を解説してくださっているWEB担当者の備忘録様に感謝いたします。