phpBBのスパム投稿対策
管理中の phpBB 3 を使ったフォーラムに日本語以外のスパム投稿が多くなってきたたので、「phpbb-禁止ワード設定と英語のみ禁止でspam投稿対策 – 検索プログラマのメモ帳」を参考にしつつ次のように正規表現のパターンを少し改変して対応した。
//英語のみ禁止チェック //$chkresult = ((mb_detect_encoding($chkmsg, "auto") == 'ASCII') && (strlen($chkmsg) != 0)); $chkresult = ((!preg_match('/[一-龠]+|[ぁ-んー]+/u', $chkmsg)) && (strlen($chkmsg) != 0));
というのは、近年英語だけではなくてロシア語や中国語のスパム投稿も増えているので、そのすり抜けを防ぐ意味がある。それでも平仮名混じりのものや機械翻訳を使った意味不明な投稿は受け付けてしまうので、そこは上述したリンク先にあるように禁止語を手作業で追加するしかない。前者の場合は比率を比較するようなことも考えられるけれど、応答速度を考えるとあまり実用的ではないかもしれない。
アップデートや MOD のインストールといった正攻法で対応することが本来は望ましいのだけど、v2時代から使っているレンタルサーバーに絡んで文字コードが EUC だったり、MOD の日本語対応が甘かったり、その辺りは WordPress とちょっと違うところなので言語を理解していれば直接記述した方が手っ取り早い。理解していなくても数行差し込むだけなので特に難しい事はないと思う。
個人事業主のウェブとiOSアプリ開発者で一児の父親。JavaScript, ActionScript, AppleScript, PHP, SQL, ObjCの読書実行試験運用管理を生業とし、BIND, SMTP, APACHE を FreeBSD, MacBSD, Mac OS X で使い、エディタは Vi, mi, Kod と遷移して現在は Smultron、そして Coda と Xcode の IDE を重用しています。作業の自動化や効率化の導入を応援しています。
P.S. 制作履歴はLinkedInの公開プロフィールをご覧ください。