PukiWikiで空のコメントが追加されてしまう場合の対処法


投稿日:2018年2月5日
  • 0
  • 0



私の管理しているPukiWikiのサイトではconfigとrecorderというプラグインを利用して、独自フォーマットのコメントを追加できるようにしています。

これはこれで正しく動作していたのですが、1つ問題がありました。


問題点

まずは問題の発生する環境を再現します。

:config/plugin/recorder/comment/pageというページに以下の内容

#style(class=comment){{
[textarea](''[name]'' &new{[_date]};)
----
RIGHT:このレビューが参考になった…&votex([投票]);
}}

:config/plugin/recorder/comment/formというページに以下の内容

お名前:[name][textarea]
[insert]

これであとは、普通のページに以下の記述で問題なく動作します。

#recorder(comment,0)

この設定で以下のようなフォームが追加されます。

これはこれでよかったのですが、1点問題がありました。それは「コメントが空(empty)でも追加されてしまう」という問題です。
私の管理するサイトではスパム対策として「spam_filter.php」を利用しています。ただし、このプラグインには空の投稿を弾くフィルターがありません。通常の投稿の場合、内容が空だとページが削除されるため、フィルターが必要ないという事情からです。

そこで、「spam_filter.php」を編集して「コメントが空の場合は追加しない」という機能を追加しました。


lib/spam_filter.phpを編集

38行目辺りに以下を追記。

// 追記 何も書き込まれていない場合に弾くフィルター用
define('SPAM_FILTER_EMPTY_PLUGIN_NAME', 'tracker,recorder,edit,comment,pcomment,article,areaedit');

続いて250行目あたり、check_pluginという関数の下あたりに以下を追記。

// 追記 何も書き込まれていない場合に弾くフィルター
function ngempty($pluginnames = SPAM_FILTER_EMPTY_PLUGIN_NAME)
{
    if (!$this->check_plugin($pluginnames)) return FALSE;

    if ($this->post_data['textarea'] === "" || $this->post_data['msg'] === "") {
        $this->message .= 'empty ';
        return TRUE;
    }
    return FALSE;
}

見てもらえれば分かる通り、post_dataのtextareaかmsgが空の場合はエラーメッセージという簡単な対策です。


pukiwiki.ini.phpを編集

合わせてフィルターを追加します。
私の場合は以下のようにしています。

define('SPAM_FILTER_COND', '#ngempty() or #ipcountry() or #atag() or #urlbl() or #onlyeng() or #useragent() or #ipbl()');

これで設置完了です。

空の投稿をした場合、以下のようにエラーメッセージが表示されます。


現在のページを共有する



現在のページに関連する記事

PukiWikiで空のコメントが追加されてしまう場合の対処法 PukiWikiで日本以外の国からの編集を拒否する方法
spam_filter.phpを導入 spam_filter.phpを導入
spam_filter.phpで特定のホストをブロック spam_filter.phpで特定のホストをブロック
spam_filter.phpで特定のホストをブロック spam_filter.phpで特定のホストをブロック
PukiWikiで複数行のコメントを挿入 PukiWikiで複数行のコメントを挿入
PukiWikiへ「attachref.inc.php」と「areaedit.inc.php」プラグインの導入 PukiWikiへ「attachref.inc.php」と「areaedit.inc.php」プラグインの導入
PukiWikiで空のコメントが追加されてしまう場合の対処法 5段階評価プラグインを通して学ぶPukiWikiのプラグインを作成する方法

おすすめの記事

lazysizesの使い方を通して学ぶ、画像の遅延読み込みとレスポンシブイメージの基本

lazysizesの使い方を通して学ぶ、画像の遅延読み込みとレスポン…

FuckAdBlockを利用して自由自在にAdblock対策をする方法

FuckAdBlockを利用して自由自在にAdblock対策をする方法

エンティティとデコード用プラグイン「Entity Decode Button」を作成しました

エンティティとデコード用プラグイン「Entity Decode Button」…

DELL Inspiron 3250のHDDをSSDへ換装して、メモリを16GBへ増設

DELL Inspiron 3250のHDDをSSDへ換装して、メモリを16GBへ増設

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決まり!

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決…

WordPressの最速キャッシュを探せ!APC、memcached、Transients APIを比較

WordPressの最速キャッシュを探せ!APC、memcached、Transients…

公式ドキュメントよりも詳しいTinyMCEの使い方(基本編)

公式ドキュメントよりも詳しいTinyMCEの使い方(基本編)

コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう

コピペから脱出!iptablesの仕組みを理解して環境に合わせた設…


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。