スパムと迷惑コメントしかこなかったのでraspiブログのコメント欄を使用不可にしてTwitterのDMのみにしておいたのですが、TwitterのDMにもスパムと迷惑メールが来るので諦めてコメント欄を復活させます。そのまま復活させてもまたスパムと迷惑メールが来るだけなのでふと思い出したCAPTCHAという技術を使用してスパムを減らしてみたいと思います。しばらく復活させたら割合などを載せておきたいと思います。
ちなみにCAPTCHAはCompletely Automated Public Turing test to tell Computers and Humans Apartの頭文字だそうです。完全に自動化された人間とコンピュータを識別する公開式チューリングテスト(直訳)チューリングテストは人間と機械を見分けるために行われる会話のようなもの。誰かが機械は考えることができるかということを確かめるために、人間と、機械と筆談を行い、前者に相手が見えたいように会話をしたときにその人が相手は人間であると感じたときに機械は考えたといえるというテストだったような・・・。
使ってみる
今回は「Invisible reCaptcha for WordPress」というプラグインを使用してみたいと思います。
鍵の取得
まずホームページにアクセスしてadminconnsoleからサイトを追加します。
必要な情報を記入するとサイトキーとシークレットキーを確認できます。この文字列は設定からいつでも確認できます。
キーの入力
では実際にプラグインを設定していきましょう。
サイト鍵にサイトキーを秘密鍵にシークレットキーを入力します。
次にWordPressというタブで保護するフォームを選択します。そうしたらこのブログはJINをテーマとして使用しているのでカスタマイズから記事のコメントの表示をオンにしておきます。すると、コメントにCAPTCHAが適用されていることがわかります。
reCAPTCHAをするとWordPressに重大なエラーが発生する
はい。有効化した後に気づいたのですが、ログインフォームやコメント欄にログインや投稿をすると処理されず重大なエラーが発生しましたと表示されます。このプラグインがかなり前から更新されていないことからPHP8に対応していないようです。
でもInvisible reCAPTCHAを使いたい
しかし、一度入れてしまったのでどうしても消したくありません。そこでどうしたら治せるか調べてみました。ログインするのにはInvisible reCAPTCHAを削除しなければならないので一度FTPサービスなどで「/wp-content/plugins/invisibleなんとかかんとか」というディレクトリを削除して無効化します。デバッグモードを使用して何がエラーを引き起こしているのかを確認してみると、次のエラーが表示されていました。
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /home/<"_">/www/($_$)/wp-content/plugins/invisible-recaptcha/includes/utils/MchIPUtils.php on line 197
調べてみると、PHP8からは配列を読んだりするときに{}を使用することができなくなっているみたいです。このプラグインでは配列の表記を{}でおこなっていたためエラーが発生したようです。では原因がわかったので直していきましょう。
WordPressの管理画面に入り、左のツールバーからプラグイン→プラグインファイルエディター→Invisible reCAPTCHAを選択します。次に、右のヒエラルキーよりincludes/utils/MchIPUtils.phpを選択します。そこの197行目をみると次のようになっています。
while ($seg {0} == '0')
となっているので、{}を[]に直しておきます。
while ($seg [0] == '0')
そうして保存すればエラーが出なくなります。