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のプラグインを作成する方法

おすすめの記事

Adblock対策プラグイン「End of Adblock Cycle」を作成しました

Adblock対策プラグイン「End of Adblock Cycle」を作成しました

Windows 10を32bit版から64bit版に変更する方法

Windows 10を32bit版から64bit版に変更する方法

標準のアンインストーラーで消えないソフトを徹底的に削除する方法

標準のアンインストーラーで消えないソフトを徹底的に削除する…

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集できる投稿画面を作る方法

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集…

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャッシュの仕組み

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャ…

GMO系列のホスティングサービスでGmailへメールが送信できない不具合が発生中

GMO系列のホスティングサービスでGmailへメールが送信できない…

SNSのカウントをキャッシュするWordPressのプラグインを作成しました

SNSのカウントをキャッシュするWordPressのプラグインを作成し…

Apacheのmod_expiresでファイルタイプごとにキャッシュをコントロールする方法

Apacheのmod_expiresでファイルタイプごとにキャッシュをコント…


コメントを残す

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

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