• 締切済み

禁止ワードの複数設定方法について

あんQというスクリプトを利用しているのですが、荒しやスパムが酷く禁止ワードを設けたいと思いサポート掲示板にてその話題があったので早速導入してみました http://lounge.suepon.com/data/pastlog-1164603809.html 現状、不具合なく更に何の問題もなく運営でいているのですが、正規表現等の知識も無いもので複数の禁止ワードを設定する際にかなり面倒になっています sub antispam { $i=index($mesnew,"馬鹿");#名前、項目名、コメントなど if ($i>=0){ &error("ご利用どうも。");} $i=index($mesnew,"あほ");#名前項目名、コメントなど if ($i>=0){ &error("ご利用どうも。");} $i=index($mesnew,"糞");#名前、url、項目名、コメントなど if ($i>=0){ &error("ご利用どうも。");} } というように、記載しているのですが設定しておきたいワードがかなり多い事と、随時スパムや荒しがあった時に対処する為にスクリプト最上部に設定項目を設ける、別ファイルの禁止ワード集を読み込む等の処理をしておきたいのです $i=index($mesnew,"馬鹿 あほ"); としても駄目で、 $i=index($mesnew,"馬鹿,あほ"); としても駄目でどうしたら良いのかも分からず、右往左往しております できれば、 $no_wd = '馬鹿,あほ'; 等というように、スクリプトの最上部に色々設定項目のある箇所で設定したいのです 色々と調べてみたのですが、限界にきてしまい投稿させて頂きました よろしくお願い致します

みんなの回答

  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

やりたいことは、こんな感じでしょうか #------------ここから #/usr/bin/perl $ng = 'バカ,アホ,馬鹿';  #禁止ワード。カンマ区切りで設定 $nesnew = "馬鹿じゃないの";  #実際は投稿されたメッセージ。テスト用 @ng_arr = split( /,/ ,$ng ); foreach my $tmp ( @ng_arr ){   if( $nesnew =~ /$tmp/){      &error;  #禁止ワードにマッチングしたので error( )に飛ばす   } } print " ご利用ありがとうございました。\n "; exit; sub error{   print " 不適切な発言がありました。\n ";   exit; } #------------ここまで 設定されている禁止ワードの数分、チェック対象の文字列と マッチング処理をすればいいかと思います。 $ng に代入するところを、設定ファイルから読み込むように 変えれば、メンテも簡単かと。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 禁止ワードのすり抜け対策

    現在、以下のようにして禁止ワードを設定しています。 httpという単語を禁止ワードにしているのですが この禁止ワードをすり抜けるために h t t pなどと書き投稿して利用者を悪質な出会い系サイトに誘導しようとする者がおり、困っております。 半角・全角スペースを使って禁止ワードをすり抜けようとする行為をン防止することは可能でしょうか? foreach (@deny) { if (index($FORM{'sender'},$_) >= 0) { &error("入力エラー","禁止ワードが含まれています。"); } if (index($FORM{'from'},$_) >= 0) { &error("入力エラー","禁止ワードが含まれています。"); } if (index($FORM{'sub'},$_) >= 0) { &error("入力エラー","禁止ワードが含まれています。"); } if (index($FORM{'comment'},$_) >= 0) { &error("入力エラー","禁止ワードが含まれています。"); } }

    • ベストアンサー
    • CGI
  • 禁止ワードの設定

    禁止ワードを設定して、その禁止ワードの一つと投稿内容が一致したら 投稿を拒否したくて以下のように記述したところ、 禁止ワードではない言葉でもエラーが表示されてしまいました。 どこか記述が違うのでしょうか? @tokumeikinshi = ("アホ","バカ");#禁止ワードのリスト if((my $body)or(my $name)or(my $subject) = @tokumeikinshi){ &::error(\'禁止ワードが含まれています');{exit;} }

    • 締切済み
    • CGI
  • Postmailの禁止ワードの改造

    CGIに詳しい方ご指導の程宜しくお願い致します。 現在KENTWEB様のPostmailを使用しております。 その中の機能で【禁止ワード】というものがあり、 荒らし対策やスパム用として活用しているのですが 入力項目に禁止項目で設定した禁止ワードが入力されていて メールを送信しようとすると次のページで 【ERROR ! 禁止ワードが含まれています 】と表示されるのですが この【エラー文章】をどこの入力項目に入ってる文章が 禁止項目なのかを表示したいのです。 ただし何の文字が禁止ワードなのかが表示されてしまうと 荒らし対策やスパム対策にならないので、入力項目のみ 表示したいのですが、可能でしょうか? 大変乱文で説明が分かりにくい点もございますが何卒 ご指導の程宜しくお願い致します。 ■Postmailの動作サンプル http://www.kent-web.com/data/postmail/index.html ■Postmailダウンロード先 http://www.kent-web.com/data/index.html

  • 禁止ワード設定・・・

    僕はgooブログをやっているんですが、この間、「死ね」というコメントが来ました・・・。 削除はしたんですが、また来ると怖いので、禁止ワード設定をやってみようと思うんですが、「禁止ワードに追加」というとこがないのでここに質問しに来ました。 よろしくお願いします。

  • CGI掲示板~禁止ワード追加カスタマイズ

    やっとここまでできました。 前回の質問の後に追加できないので、新たに投稿します。 詳しい内容は前回の質問を見て下さい。 なんとか独自で以下のように禁止ワードを設定できましたが、 最高でも18個が限界のようです。あとはエラーが出ます。 これを好きなだけ設定する方法を教えて下さい。 初期設定の中に追加 ↓↓↓ ## 禁止文字 @haijyo = ( ,'殺' ,'死' ,'宣伝' ,'無修正'); 実際の登録処理の中に追加 ↓↓↓ # 禁止処理 foreach $haijyo (@haijyo) { if ($comment =~ /$haijyo/) { &error('コメントに禁止ワードがあるようです'); } } foreach $haijyo (@haijyo) { if ($name =~ /$haijyo/) { &error('名前に禁止ワードがあるようです'); } } foreach $haijyo (@haijyo) { if ($title =~ /$haijyo/) { &error('タイトルに禁止ワードがあるようです'); } } foreach $haijyo (@haijyo) { if ($risou =~ /$haijyo/) { &error('希望する相手に禁止ワードがあるようです'); } } ここまで必死にきました。宜しくお願いします。

    • 締切済み
    • CGI
  • 禁止ワードの設定についてお尋ねします。

    下記の中で、禁止メールアドレスや禁止用語の設定ができると思うのですが、どの部分に禁止したいメールアドレスや用語を入れればいいのか分かりません。 何方か分かる方いないでしょうか? いた際にはご指導よろしくお願いします。 # 禁止メールアドレスのチェック if(@ngemails){ local($ngemail_flag) = '0'; foreach $ngemail (@ngemails){ if($in{'email'} eq $ngemail){$ngemail_flag = '1'; last;} } if($ngemail_flag){&error('メールアドレスが拒否されました');} } # 禁止用語のチェック if(@ngwords){ local($ngword_flag) = '0'; foreach $ngword (@ngwords){ if($in{'comment'} =~ /$ngword/i){$ngword_flag = '1';} if($in{'sub'} =~ /$ngword/i){$ngword_flag = '1';} } if($ngword_flag){&error('禁止用語が含まれています');} }

    • ベストアンサー
    • CGI
  • 禁止ワードに設定できない文字

    CGIROOM で配布されている CGI機能拡張用のプログラム『ワードチェック』 (伝言板などに禁止ワードを設定できる) …を利用しているのですが、 これ↑に"登録することができない単語 (つか、文字)"…って、ありますか?? 例えば「半角カンマは駄目」とか。。。 「半角スペースを入れちゃ駄目」とか。。。 登録する単語の数に制限は無いので、 沢山登録したら、…最近、何を書いても 禁止ワード扱いされ、投稿が出来なく なってしまいました~(^_^;) ■備考■ my $word=<<'WORD'; 馬鹿 死ね! ウンチ WORD ↑こんな風に『my $word=<<'WORD';』 と『WORD』の間に、投稿されたくない単語 を書くようになってます。

    • ベストアンサー
    • CGI
  • 条件一致の方法

    禁止ワードを設定して、その禁止ワードの一つと投稿内容が一致したら 投稿を拒否したくて以下のように記述したところ、 禁止ワードではない言葉でもエラーが表示されてしまいました。 どこか記述が違うのでしょうか? @kinshi = ("アホ","バカ");#禁止ワードのリスト if(($body)or($name)or($subject) = @kinshi){ &::error(\'禁止ワードが含まれています');{exit;} }

    • ベストアンサー
    • Perl
  • gooブログをしていますが、下ネタ系の書き込みが多く困っています。禁止

    gooブログをしていますが、下ネタ系の書き込みが多く困っています。禁止ワードの設定はしましたが、それによりいつもコメントしてくれる人にも制限がなされ書き込みが少なくなってしまっています。この荒らしのような書き込みを阻止する方法があれば教えてください。

  • ゲストブックで英字のみの投稿を禁止したい

    ゲストブックで英字のみの投稿を禁止したい はじめまして、こんにちは。 http://www.vector.co.jp/soft/dl/unix/net/se440000.html 上記のphp製の掲示板を使いスパム投稿防止のため英字のみの投稿を禁止したいのですが PHPのことが良くわからずうまくいきません。 他の掲示板などで調べ $j = $in{'comment'}; &jcode'convert(\$j, 'euc'); if ($j !~ /[\xA1-\xFE][\xA1-\xFE]/) { &error("エラー:半角英文のみは禁止"); } if ($in{'url'} && $in{'comment'} =~ /\Q$in{'url'}\E/i) { &error("不適切な投稿です"); } $urlnum = ($in{'comment'} =~ s/http/http/g); if ($urlnum > $ngurl) { &error("エラー:http多すぎます"); } 違う種類の掲示板ではこのような構文を入れているようなんですがどこに、どう変えて 入れたらいいのかわからずお手上げ状態です。 どなたか詳しい方アドバイスいただけないでしょうか? また上記ゲストブックと同等機能で既にスパム投稿の禁止されている スクリプトなどを公開しているところがあれば教えてください。 宜しくお願い致します。

    • ベストアンサー
    • PHP