# プログラミング # 技術的な話題# 技術的な話題-PHP

pukiwikiにスパムフィルタを導入する。

pukiwikiにスパムフィルタを導入する。

GW中は管理している同人サイトのWordpressなどのレイアウト変更に当てようと思って、久々にサーバの中身などを整理していたら、昔に設置したpukiwikiに海外からSPAM投稿が入っていてげんなりした。多分、SEOスパムなんじゃないかと思われるのですが賞賛する英文とurlが新規投稿でねじ込まれていたのですよ。

使っていないwikiだしこのまま削除してもいいかなと思ったけど、なんかしゃくなのでSPAMフィルタを導入しておいた。

この記事を参考に導入したのだけどわかりにくかったので説明。

上記サイトに置かれている下記のファイルをダウンロード。

上記のファイルをpukiwikiのlibライブラリに設置。patchファイルを当てます。patchコマンドの使い方は下記。

% patch plugin.php < plugin.php.patch

これで、ファイルの差分がplugin.phpに当てられます。

ipcountryフィルタを使うために照合ファイルをダウンロードします。

ダウンロードしたファイルをトップディレクトリに置きます。pukiwiki.ini.phpがあるディレクトリですね。

reCAPTCHAを使うためにライブラリを取ってきます。リンクが切れていたのでこちら。

ファイルを解凍して、recaptchalib.phpをlibディレクトリに置きます。

NetDNSを使うためにダウンロードしてきてNetという名前で設置します。ダウンロードは下記。

キャッシュファイルを造ります。これもトップディレクトリですね。

% touch dns_ns.cache % chmod 777 dns_ns.cache

あとはpukiwiki.ini.phpに下記を追記します。

<?php
define('SPAM_FILTER_COND', '#useragent() or #filename() or #formname() or #atag() or (#onlyeng() and (#urlnum() or #uaunknown())) or #urlbl() or #urlnsbl() or (#url() and #ipdnsbl())');
define('SPAM_FILTER_CAPTCHA_COND', '#acceptlanguage("dummy") or  (#url() and (#onlyeng() or #ipcountry() or #ipdnsbl()))');

define('SPAM_FILTER_RECAPTCHA_PUBLICKEY',  'hogehogehoge');
define('SPAM_FILTER_RECAPTCHA_PRIVATEKEY', 'piyopiyopiyo');

reCAPTCHAの公開鍵と秘密鍵は別途取ってくる必要があります。下記サイトを参照して取得して下さい。

取得した公開鍵と秘密鍵SPAM_FILTER_RECAPTCHA_PUBLICKEYとSPAM_FILTER_RECAPTCHA_PRIVATEKEYへ置き換えます。

これで設定は終了です。記事を新規作成してみてURLを入力した記事を作ろうとすると下記のようにcaptchaが出てくるようならOKです。

なんだろう、全機能把握してないで組み込んでる。文字化けもでるし、後で何とかしよう。こんな事に貴重な一日費やしてしまった orz