- 締切済み
禁止ワードの設定
禁止ワードを設定して、その禁止ワードの一つと投稿内容が一致したら 投稿を拒否したくて以下のように記述したところ、 禁止ワードではない言葉でもエラーが表示されてしまいました。 どこか記述が違うのでしょうか? @tokumeikinshi = ("アホ","バカ");#禁止ワードのリスト if((my $body)or(my $name)or(my $subject) = @tokumeikinshi){ &::error(\'禁止ワードが含まれています');{exit;} }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- pick52
- ベストアンサー率35% (166/466)
関連するQ&A
- Perl 禁止語句
テキストの中に禁止語句一覧があります。 それと一致した場合、エラーを返すのですが、 現在のコードですと、 完全一致で、これを部分一致にする 方法を教えてください。 またコードの指摘があればよろしくお願いいたします! ◆ngword.txt◆ あい いう うえ えお ・ ・ ・ 1000行ほど(もっとあるかもしれません) ◆test.pl◆「UTF-8」 #/usr/bin/perl use Encode; my $Name = "え"; $Name = encode('cp932', decode('UTF-8', $Name)); open my $fh, '<', 'ngword.txt'; chomp(@ngword = <$fh>); if(&ban($Name, \@ngword)) { print "error\n"; } sub ban { my $body = shift; my $word = shift; $body =~ s/(\x0d\x0a|\x0a|\x0d|\n|\s|\x81\x41|\xff)//g; return map { $body =~ /$_/m } @$word; }
- ベストアンサー
- Perl
- 禁止ワードに設定できない文字
CGIROOM で配布されている CGI機能拡張用のプログラム『ワードチェック』 (伝言板などに禁止ワードを設定できる) …を利用しているのですが、 これ↑に"登録することができない単語 (つか、文字)"…って、ありますか?? 例えば「半角カンマは駄目」とか。。。 「半角スペースを入れちゃ駄目」とか。。。 登録する単語の数に制限は無いので、 沢山登録したら、…最近、何を書いても 禁止ワード扱いされ、投稿が出来なく なってしまいました~(^_^;) ■備考■ my $word=<<'WORD'; 馬鹿 死ね! ウンチ WORD ↑こんな風に『my $word=<<'WORD';』 と『WORD』の間に、投稿されたくない単語 を書くようになってます。
- ベストアンサー
- CGI
- 禁止ワードの複数設定方法について
あん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 = '馬鹿,あほ'; 等というように、スクリプトの最上部に色々設定項目のある箇所で設定したいのです 色々と調べてみたのですが、限界にきてしまい投稿させて頂きました よろしくお願い致します
- 締切済み
- CGI
- 禁止ワードのすり抜け対策
現在、以下のようにして禁止ワードを設定しています。 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
- 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
- 変数に禁止された文字が含まれている場合の処理について
掲示板を作っています。 コメントの登録時に、禁止された文字が含まれていた場合に、投稿をとめる方法について教えてください。 例えば、コメント(変数名$com)に■、▲、●といった文字が含まれている場合に処理を止める方法です。 (イメージ) 変数$comに、"■" or "▲" or "●"を 含む場合 → print "禁止文字が含まれています"; exit; 含まない場合 → // 投稿処理 $sql = "update BBS set ・・・・ ・・・・ ・・・・ 以上、宜しくお願い致します。
- ベストアンサー
- PHP
- コンマ(,)を入力を禁止させたい
お世話になります。 フリー配布のCGI(Perl)をちょっと改造しているのですが カンマを禁止したり別の文字に置き換えたりって 方法ありますか? コンマで区切っているタイプのCGIなので、 訪問者さんが本文中にコンマを入力して データがズレまくってしまいます; 禁止ワードにすればいいのかと思って if($in{"name"} ~ /,/ ){ &error('コンマの使用は禁止されています'); } と、入れてみたらエラーになってしまいました; 何か方法ありませんか? よろしくお願いします。
- ベストアンサー
- Perl
- メール送信で文字化け
メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $to= "aa@aa.aa"; $from= "bb@bb.bb"; $subject= "メール送信テスト"; $headers= "From:$from"; $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); $name= $_POST["name"]; $sub= $_POST["sub"]; $body= $_POST["body"]; $message="$name \n $sub \n $body \n"; if(mail($to, $subject, $message,$headers)){ echo "送信完了"; }else{ echo "送信エラー"; } ちなみに、 $subject= base64_encode($subject); とかもやってみたけど駄目でした。 よろしくお願いします。
- ベストアンサー
- PHP
- 条件分岐について
# 禁止文字 @haijyo = ('jp','JP','JP','jp','com','COM','COM','com','net','NET','net',); foreach $haijyo (@haijyo) { if($body =~ /$haijyo/){ push(@error, '本文にメールアドレスやURLの記入はできません。または禁止ワードが含まれています') } } を禁止ワードが本文($body)に含まれており なおかつユーザーエージェントにwindowsが含まれていた(いずれも一致した)場合、 エラーを吐き出すようにしたくて elsif($ENV{'HTTP_USER_AGENT'} =~ /windows/)を書きくわえてみたのですがうまくいきません。 どのようにしたら両方の条件式に一致した場合にエラーを吐き出せるのでしょうか?
- ベストアンサー
- Perl