バージョン | 1.4.3 |
---|---|
投稿者 | 修羅 |
状態 | 完了 |
投稿日 | 2004-06-10 (THU) 22:23:11 |
ページを作るときや編集・投稿すべて含めて 予め設定しておいた単語をNGワードとして エラーを出すようにはできないでしょうか? pukiwikiとしては編集をすべて一般開放しながらも 荒らしに対する予防線は張っておきたいので。。
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>', );
reimyさん非常に分かりやすい実践レベルでの説明ありがとうございます。助かりました。
// 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); } }