ブログにしろ、企業のサイトにしろ、すっかりWordPressが主流になった昨今。
とあるサイトをリニューアルすることになったのですが、その前にスパム対策出来ないか? との相談が。
そのサイトではテンプレートエンジン、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の処理を追加です。
- シークレットキー設定
- file_get_contents実行
- json_decode実行
- 結果で分岐処理
という基本的な流れは同じです。
動作状況
現状、こんな感じで、一応チェックが入ります。
本当はv3が良かったのですが、どうせWordPressでリニューアルするまでの間の対処なので、とりあえずこれで。
そのv3も突破するプログラムが出回ってるが困り者ですが。
では、リニューアルの方に力を入れたいと思います。