テンプレートエンジン SmartyでGoogle reCAPTCHAを設置

ブログにしろ、企業のサイトにしろ、すっかりWordPressが主流になった昨今。
とあるサイトをリニューアルすることになったのですが、その前にスパム対策出来ないか? との相談が。

そのサイトではテンプレートエンジン、Smartyを使用していたのですが、Google reCAPTCHAの設置に関する情報が無かったので、半分、防備録になります。

Smartyの公式サイト

Google reCAPTCHA

設置環境

設置したサイトの状況です。

Smarty 3.1.17
Apache 2.4
PHP 5.6

Smartyの最新バージョンは2021年3月20日の時点で3.1.39(2021/2/17リリース)ですが、基本、Smartyのソースは変更していません。

テンプレートエンジンですが、tplファイルはありませんが、テンプレートになるhtmlファイルはあります。

Google reCAPTCHAのバージョンはv2

Google reCAPTCHAの最新バージョンはv3ですが、設置したのはv2です。
v3を設置出来ないかな?
と色々と試したのですが、現在の私では無理でした。
まあ、PHPもちょっと触ったぐらいなので、それでも設置できただけでも御の字。

ちなみに、v2はボタンを押すタイプを採用です。

ソースコードの変更

実際に変更したソースコードについてです。

参考にした記事
https://stackoverflow.com/questions/27274157/how-to-validate-google-recaptcha-v3-on-server-side

テンプレート(html)の変更

htmlの変更です。

https://stackoverflow.com/a/61247028
この<script> から </script>部分を引用。
formは既存のformをそのまま利用し、サイトキーの記載がある行だけ追加。
そしてサイトキーは、自分で取得したv2のサイトキーを入力です。

phpファイルの変更

php側の変更です。

https://stackoverflow.com/a/32368340
このsubmit.phpの処理を追加です。

  1. シークレットキー設定
  2. file_get_contents実行
  3. json_decode実行
  4. 結果で分岐処理

という基本的な流れは同じです。

動作状況

現状、こんな感じで、一応チェックが入ります。

本当はv3が良かったのですが、どうせWordPressでリニューアルするまでの間の対処なので、とりあえずこれで。

そのv3も突破するプログラムが出回ってるが困り者ですが。

では、リニューアルの方に力を入れたいと思います。