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

おすすめの記事

誤って削除したGoogle Chromeのブックマークを復元する方法

誤って削除したGoogle Chromeのブックマークを復元する方法

初心者でも安全なLAMP環境を構築する方法を解説

初心者でも安全なLAMP環境を構築する方法を解説

Web制作の仕組みを根底から覆すかもしれないWix ADIの人工知能

Web制作の仕組みを根底から覆すかもしれないWix ADIの人工知能

初めてでも理解できるようになる「Google Chrome機能拡張の開発」

初めてでも理解できるようになる「Google Chrome機能拡張の開発」

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデ…

「アマレコTV」でWindows 10のPC画面に表示されている動画を撮影する方法

「アマレコTV」でWindows 10のPC画面に表示されている動画を撮…

Linuxでサーバを構築するに当たって必要になる基礎知識

Linuxでサーバを構築するに当たって必要になる基礎知識

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました


コメントを残す

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

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