• ベストアンサー

英語スパム対策。正規表現で日本語が含まれてなかったらエラーにする方法は?

最近自分の掲示板に英語のスパム行為があり、正規表現をつかって、日本語(漢字が)が含まれていなかったらエラーになるようにしたいのですが、どのように書いたらいいのでしょうか? if ($in{'comment'} !~ /[\z]/) { &error("エラー"); } 上のように書いたのですが、うまくいきませんでした。どなたかご教授ねがいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

直接の回答ではありませんが参考までに http://swanbay-web.hp.infoseek.co.jp/bbs_spam.html あと、既に確認済みかもしれませんが、 使用しているCGIがどこからかダウンロードしたものならダウンロードしたサイトでspam対策版にバージョンアップされているかも確認してみてください。 対策がされていなければリクエストすればバージョンアップしてくれるかもしれません。

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

関連するQ&A

  • 正規表現で

    正規表現で 8文字以上、15文字以内で1文字以上の英語(大文字小文字どちらか一方で可)と数字が含まれている表現を考えているのですが、思いつきません。 [0-9a-zA-Z]{8,15} だと全て数字・英語でも通ってしまうので、困っています。 どなたか詳しい方、ご教授ください。

  • 正規表現でスパム投稿をブロックしたい

    現在↓このような正規表現でアルファベット及び記号をブロックし、なるべく日本語が含まれていないと、スパム扱いになるよういしました。 //SPAMフィルター function mb_check($str){ if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str)){   return False;  }else{   return True;  } } しかし、これでも、スパム書き込み来ることがあるので、 これにあらたに ”httpという文字列が含まれていたら”という条件を 足すことにしました。 しかし、その記述の方法がよく分かりません。 これに、”httpという文字列が含まれていたら”とういう条件を足すには どのように記述すればよいのでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現での「ひらがな」の使い方

    正規表現を使って、掲示板などで「ひらがな1字のみ」の記述を制限しようと思うのですが、どうもうまくいきません。 if ($comment =~ m/^[あいうえお…わをん]$/) {} こんなことをしてもみたんですがやっぱりだめでした… どうすればいいのでしょう。 教えてください。

    • ベストアンサー
    • CGI
  • アルファベットを排除したい

    こんにちは。 よく掲示板の迷惑書き込み対策などで、 if ($in{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) { &error("日本語を書いてください。");} というのがあります。 これは、ひらがなかカタカナが入っていない書き込みをするとエラーとなるようにしているものだと思うのですが、これを「アルファベットが入っていたらエラーとなる」ようにするにはこの文字コード?のようなものをどのように指定したらいいでしょうか。 アンケートのようなCGIで、アルファベットのみを無秩序に羅列したスパムに困っているのですが、漢字のみの投稿がある可能性があり、「ひらがな・カタカナが入っていない」を条件にすると困ることがあります。 逆に、普通に投稿する場合だったらアルファベットが入ることはありえないタイプのアンケートなので、a~z、A~Zが入っていたらエラーになるようにしたいと思っています。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 正規表現に詳しい方、教えてください。

    正規表現に詳しい方、どうか教えてください。 思うように動作してくれなくて困っています。 「Spam Mail Killer」というフリーソフトで (http://www.vector.co.jp/soft/win95/net/se225316.html) 正規表現でスパムメールかどうかの判断をさせたいのです。 (このソフトはBREGEXP.DLLを使っているそうです。) たとえば、 http://www.abcdef.com/deai.htm (このURLは架空のものです) のように「deai」を含むURLが書かれたメールにヒットするようにと思って、次のように書きました。 ##/(http://)[-/\.A-Za-z0-9]*(deai)[-/\.A-Za-z0-9]+/ しかし、これを実際にテストしてみると「deai」を含むメールにヒットしません。 ()を外すと、「deai」を含まないURLにもヒットしてしまいます。 自分でもそれなりに調べてみたのですが、どうにもお手上げです。 正規表現に詳しい方、どうかアドバイスをお願いします。

  • 正規表現を使って入力チェックを行う

    JavaScriptで正規表現を用いて半角英数入力チェックを行いたいのですが、うまくいきません。 ご協力お願いします。 --【1】------------------------------------------------- if((element2.value.match(/^[^0-9a-zA-Z]$/)){  document.FORM01.in_AAA.value="";  return false; } ------------------------------------------------------- 【1】では、半角、全角に関わらず正常に処理が行われます。 --【2】------------------------------------------------- if(!element2.value.match(/^[^0-9a-zA-Z]$/)){   document.FORM01.in_AAA.value="";   return false; } ------------------------------------------------------- 【2】にすると、半角、全角ともエラーとなってしまいます。 どのようにすれば、実装できるのでしょうか。 皆さん、よろしくお願いします。

  • 正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。

    正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。 両方とも構文エラーが起きないのでその時点で?ですが .は\.としないと正規表現ではドット文字を認識しないのはわかりますが、正規表現の@はどうすればよいのでしょうか? Perl自体@も配列なので\@つけた方が・・・ よろしくお願いいたします。 $x = "test@example.com"; if ( $x =~ /[^a-zA-Z0-9\.\-\_@]/) if ( $x =~ /[^a-zA-Z0-9\.\-\_\@]/)

    • ベストアンサー
    • Perl
  • 正規表現について

    正規表現の勉強中です(^^ゞ $data = "<a=\"b\">あいうえお - かきく けこ</c>"; $dataに代入されている上記のデータで『あいうえお』の部分を 取り出したいのですが、どのような正規表現をするといいのでしょうか? ※補足 『あいうえお』の部分は常に日本語ですが、文字数は常に変化します。 御教授 宜しくお願い致します。

  • 秀丸メールの正規表現について質問です。

    仕事で秀丸メール(バージョン5.0)を使っているのですが、正規表現を使って溜まっているスパムメールを検索して一気に削除したいのです。なにか良い正規表現はございませんでしょうか?(外国語・日本語のスパムすべて) なお、事情があって迷惑メールフィルターは利用できず、溜まっているスパムの数も膨大で非常に困っております。

  • 掲示板スパム対策(改造)ガードキー効かず

    二度目まして。 同掲示板で、ガードキー入力を必要とするようにしたいのですが、 うまく機能してくれません。 「0123」を入れても、書き込みできない状態です。 他のルーチンとの兼ね合いでしょうか??? #===============================記事をファイルに書き込むサブルーチン=========================== sub regist { #入力されたデータをチェックして、投稿者、コメント、メールアドレスが #入力されていなければエラーを出力し、再入力を促す if ($FORM{'name'} eq "") { &error(bad_name); } if ($FORM{'comment'} eq "") { &error(bad_comment); } if ($in{'guard'} ne "0123") { &error(bad_guard); } #スパム対策用●●●●●●●● #メールアドレスの未記入を許可する場合は、下の行の先頭に「#」をつけて無効にする #if ($FORM{'email'} ne "") { if (!($FORM{'email'} =~ /(.*)\@(.*)\.(.*)/)) { &error(bad_email); }} ~略~

    • ベストアンサー
    • CGI