スパム対策済コメントプラグイン(comment_nospam.inc.php, pcomment_nospam.inc.php) 
このプラグインについて †
スクリプトから自動投稿されるスパムの類をシャットアウトするためのプラグインです。
今までありそうでなかった(と思う)ので作ってみました。
プラグインに登録されているNGワードを含む投稿があった場合その投稿を無効にします。
また、PukiWiki標準のcommentプラグインとpcommentプラグインを利用しているので、これらからの乗り換えも容易です。(comment→comment_nospamと書き換えるだけ)
ダウンロード †
上記バージョン以外のPukiWiki(comment.inc.php,pcomment.inc.php)の場合は後述の注意点をご覧ください。
NGリストについて †
Ver1.10から
の2種類を選べるようになりました。
それぞれのメリット・デメリットについてまとめてみます
プラグイン内部のNGワードのリストを使用
- メリット
- Wikiを設置した管理人しかリストを編集することができないので、第三者の悪意のある利用者にリストを改竄される心配がない
- 複数のWikiでプラグインを共有している場合にそれぞれのWikiのSpamListを編集する必要がない
(うちのような特殊な状況^^;)
- デメリット
- Wikiを設置した管理人しかリストを編集することができないので、NGチェックに漏れたコメントに対して対応に遅れることがある
外部ページに定義されたNGワードのリスト(SpamList)を使用
- メリット
- NGチェックに漏れたコメントに対して、Wikiの利用者がすぐにリストを更新できる
(Wiki利用者間での自治がしっかりしていれば有効)
- デメリット
- 第三者の悪意のある利用者にリストを改竄される可能性がある
詳しい設定方法は下をご覧ください。
設置 †
上のファイルをダウンロードして解凍後に生成されるファイルを「plugin」フォルダに入れてください。(それぞれPukiWiki標準のcommentプラグインとpcommentプラグインに対応しています)
スパムチェックを行った後のコメント投稿部分はcomment.inc.php(pcomment.inc.php)に丸投げしているので、これらのプラグインがないと動作しません(PukiWiki標準プラグインなので問題ないとは思いますが^^;)
必要に応じてプラグイン内の設定を書き換えてください
// スパムリストを定義したページ(InterWikiNameみたいなもの)
// これをコメントアウトすると後述のNG_WORDが有効になります
//define('SPAMLIST_PAGE', 'SpamList');
プラグイン内蔵のNGワードのリストではなく外部ページのリストを使用するようにします(InterWikiNameのような感じです)
この部分をコメントアウトするか、SPAMLIST_PAGEで定義されたページ自体を作らないようにすれば下記のNG_WORDが有効になります。
この設定を使用する場合は一緒にページも作成してください。
当WikiのSpamListから適当にコピー&ペーストしてください。(コピペ用SpamListソース)
(1つのプラグインを複数のWikiで使用している関係上、実際には使ってないですが^^;)
// NGワード(コンマで区切る)
define('NG_WORD', '[url],adult,casino,(中略),adsenseru.info');
プラグイン内蔵のNGワードのリストです。NGワードをコンマで区切ってください
SPAMLIST_PAGEが有効になっている時はこの設定は無視されます。
// 投稿されたメッセージに対してNGチェックを行うかどうか(0:無効 1:有効)
define('NOSPAM_MSG', 1);
// 投稿された名前に対してNGチェックを行うかどうか(0:無効 1:有効)
define('NOSPAM_NAME', 1);
それぞれ、投稿されたメッセージと名前に対してスパムチェックを行ないます。
// URLを許容する個数(1〜。0で無効)
// コメント中のURLがこの数値を超えるとエラーになります
define('NOSPAM_URL', 0);
コメント中に含むことのできるURLの上限を設定します。
0を設定すると上限チェックをしません。
URLの数がNOSPAM_URLを超えると投稿できないようになります。
// NGワードが含まれていた場合のエラー表示
define('NG_WARNING', 'NGワードが含まれています');
// URLが規定個数以上含まれていた時のエラー表示
define('URL_WARNING', 'URLは' . NOSPAM_URL . '個以内にしてください');
それぞれページ上部に表示されるエラー時の文章です
NGワードの一覧は、きりしま式 Web Patioのものを利用していますm(_ _)m
注意点 †
オリジナルのplugin_comment_convert(plugin_pcomment_convert)を一部改変して使用している関係で、上記バージョン以外では動作しない可能性があります。その場合は下記の手順でcomment_nospam.inc.php(pcomment_nospam.inc.php)を編集してください
- comment.inc.php内のplugin_comment_convertをcomment_nospam.inc.phpのものと置き換える
- 関数名を
plugin_comment_convert
から
plugin_comment_nospam_convert
に変える
- form出力部分の
<input type="hidden" name="plugin" value="comment" />
を
<input type="hidden" name="plugin" value="comment_nospam" />
に変える
pcommentの場合は上の文章中のcommentをpcommentと読み替えてください
使い方 †
#comment_nospam
#pcomment_nospam
プラグイン引数はそれぞれcommentプラグイン, pcommentプラグインと全く同じです
更新履歴 †
- Ver1.21
- PHP 5.3.0でsplit関数が非推奨となったためexplode関数と入れ替え
- Ver1.20
- スパムの特徴として環境変数のHTTP_ACCEPT_LANGUAGEが空文字だったり、HTTP_ACCEPT_LANGUAGEにHTTP_ACCEPTの値がセットしてあるということが確認できたので、これらもNGにするようにした
- Ver1.10
- InterWikiNameみたいに、外部ページにあるNGワードのリストを読み込めるようにした
- NGワードの判定方法をpreg_matchからstrposに変更した
(NGワード内に正規表現のメタ文字([ や .など)が含まれていた場合に、エスケープするのが面倒なので^^;)
- Ver1.00