NGワード機能

バージョン1.4.3
投稿者修羅?
状態完了
投稿日2004-06-10 (THU) 22:23:11

メッセージ

ページを作るときや編集・投稿すべて含めて 予め設定しておいた単語をNGワードとして エラーを出すようにはできないでしょうか? pukiwikiとしては編集をすべて一般開放しながらも 荒らしに対する予防線は張っておきたいので。。

コメント

  • reimy 2004-06-10 (THU) 22:38:47

    rules.ini.phpのユーザー定義ルールもしくはdefault.ini.phpのユーザー定義ルールで可能です。

    rules.ini.phpのユーザー定義の場合は、書き込まれたNGワードを強制的にソースレベルで別の単語に置換します。下記の例では、「禁止ワード」と書かれた場合に、IPアドレスに書き換えます。

    // ユーザ定義ルール(直接ソースを置換)
    $str_rules = array(
    	'禁止ワード' => $HTTP_SERVER_VARS["REMOTE_ADDR"],
    );

    default.ini.phpのユーザー定義の場合は、書き込まれたNGワードについて、ソースは書き換えませんが、別の単語として表示します。下記の例では、「禁止ワード」と書かれた場合に、[NG]と表示します。

    // ユーザ定義ルール(コンバート時に置換)
    $line_rules = array(
          '禁止ワード' => '<span class="errormes">[NG]</span>',
    );
  • 修羅? 2004-06-10 (THU) 22:52:25

    reimyさん非常に分かりやすい実践レベルでの説明ありがとうございます。助かりました。

  • 横からすいません。commentプラグインにはNGwordという機能があり、こちらは「禁止ワードにひっかかると投稿そのものが出来ない」という機能になっていますが、本体にはそのような機能はないのでしょうか?スパマーが編集ボタンを押すことは想定していないのでしょうか。 -- デグ? 2007-01-28 (日) 19:52:49
// Write, add, or insert new comment
function plugin_edit_write()
{
 global $vars, $trackback;
 global $_title_collided, $_msg_collided_auto, $_msg_collided, $_title_deleted;
 global $notimeupdate, $_msg_invalidpass, $do_update_diff_table;

 $page   = isset($vars['page'])   ? $vars['page']   : '';
 $add    = isset($vars['add'])    ? $vars['add']    : '';
 $digest = isset($vars['digest']) ? $vars['digest'] : '';
//↓このへんをcommentプラグインから拝借して追加
 global $comment_ng_word;

 foreach($comment_ng_word as $word)
 {
  if(preg_match($word,$vars['msg']))
  {
   // NGワードに一致した場合は書き込めない
   return array('msg'=>'書き込めません', 'body'=>'禁止ワードが含まれていたため書き込まれませんでした。', 'collided'=>TRUE);
  }
 }
  • もう既に付いてる機能をまた追加しようとしていたらこっ恥ずかしい限りですが、plugin/edit.inc.phpのwrite関数をちょっといじって、こんな感じでいいのでしょうか。>識者の方 -- デグ? 2007-01-28 (日) 20:05:50

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-09-28 (火) 18:34:21
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.290 sec.

OSDN