• ベストアンサー

変数に禁止された文字が含まれている場合の処理について

掲示板を作っています。 コメントの登録時に、禁止された文字が含まれていた場合に、投稿をとめる方法について教えてください。 例えば、コメント(変数名$com)に■、▲、●といった文字が含まれている場合に処理を止める方法です。 (イメージ) 変数$comに、"■" or "▲" or "●"を 含む場合 →  print "禁止文字が含まれています"; exit; 含まない場合 → // 投稿処理 $sql = "update BBS set ・・・・ ・・・・ ・・・・ 以上、宜しくお願い致します。

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

if (preg_match ("/[■▲●]/", $com)) { print "マッチするものがみつかりました。"; } else { print "マッチするものはみつかりませんでした。"; } こんな感じでよろしいと思われます。

参考URL:
http://search.net-newbie.com/php/function.preg-match.html,http://www.tohoho-web.com/wwwperl1.htm#Expr
wdwdwd
質問者

お礼

参考URLを参照しまして、無事できました。 ありがとうございました。

その他の回答 (2)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

禁止文字が該当するかチェックを行い、 該当した場合は単にSQLの発行をしなければよいのではないでしょうか? =========================================== if(禁止文字チェック) {   // 禁止文字があった場合   エラー表示メッソッドまたはページヘ } else {   // 禁止文字はなかった場合   SQLクエリーを実行   処理後ページへ } =========================================== もしかして、■・▲・●が文中に存在するかを調べる方法をお聞きでしょうか。

wdwdwd
質問者

補足

>もしかして、■・▲・●が文中に存在するかを調べる方法をお聞きでしょうか。 はい、その通りです。。 if(禁止文字チェック) { この部分なんですが、、宜しくお願い致します。

回答No.1

if文で禁止文字が含まれていたらexitするようにしたらダメですか?

関連するQ&A

  • MySQLに同じデータがあるかどうか確認する方法

    掲示板でスパム投稿を排除するために、同じ投稿内容は投稿できないようにしたいと思っています。 データはMySQLにありまして、bbsというテーブル名でpostdataというフィールド名を利用しています。 $sql = "select * from bbs where postdata = '$postdata'"; $res = db_query($sql, $conn); $rows = mysql_num_rows($res); if ($rows > 0) { exit; } 投稿する前にDBをチェックして同じ投稿だったらexitするようにしているつもりですが、同じ投稿内容なのにチェックされずに投稿されてしまいます。 何がいけないのでしょうか?postdata = '$postdata'" 日本語の文字列をチェックするのは無理があるのでしょうか。

    • ベストアンサー
    • PHP
  • 置換処理で500エラー

    掲示板のCGIを作成し、運営してましたが最近 業者からの書込が増えてきたため「特定の文字を消去」するようにしました。 $com : 掲示板の書込内容 @word : 消去するための特定文字 変数 foreach (@word) {  if ($_) {   $com =~ s/$_/---/ig;  } } 取りあえず「特定文字」を変数扱いにし、「---」に置き換えるようにしたのですが、「特定文字」によっては『500 Internal Server Error』が出てしまいます。(例)オープン など どのように記述したら宜しいのでしょうか? ご教授下さいm(__)m

    • ベストアンサー
    • Perl
  • 変数に256文字以上のテキストを格納したい

    お世話になります。 MS-SQL2000サーバーから、MS-ACCESS-VBA上でDAOにてレコードセットを取得、あるフィールドのValueをテキストファイルに書き出したい という処理を行っております。 このあるフィールドがテキスト(Verchar)なのですが Valueが255文字を超えている場合、変数に入れた時点で256文字目以降が 文字化けしてしまいます。 256文字目以降も変数に入れてテキストファイルに書き出したいのですが どのようにすれば実現できますでしょうか? Viewをつくり複数フィールドに分けて(255文字づつ)出力するなども 考えたのですが、どうにもスマートでなく・・・・ どなたか良い考え・経験をお持ちの方、アドバイスお願いします。

  • urlを変数に入れたい。

    掲示板のコメント欄にURLが記入された場合は、一番初めに書き込まれたURLを変数に格納したいのですが、方法が考えつけません。 以下の書込み内容の場合で例えますと、 -------------------------------------------------- あいうえおhttp://hoge.com/かきくけこhttp://hoge.jp/ さしすせそhttp://hoge.net/たちつてと -------------------------------------------------- $FORM{'comment'}から一番初めに書き込まれた文字列 (http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+) を抽出して、変数に格納。 $url = 'http://hoge.com/'; このような感じです。 お手数ですが、宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • Access/ADOを使って変数にSQL文を入れた場合の変数の内容の確認

    お知恵をかしてください。 Access2000を使用しています。 VBAのADOを使ってデータベースの操作しています。 モジュールにSQL文を入れたい時は変数を文字列で宣言して記述するのですが、 書きたいSQL文に例えば下記のような計算式を入れたい場合 『&』と『"』が 変数の宣言が文字列なのでくっついて消えてしまいますよね? 変数= sql文 と Format(Mid([FieldName],1,4) & "/" & Mid([FieldName],5,2) & "/" & Mid([FieldName],7,2),"yyyy/mm/dd") そこで、デバッグプリントをしてイミディエイトで実際いまの変数の値はどうなってるのかを確認しながら、 『"』と『&』をつけ足したりしたいのですが、 SQL文が間違っているとデバッグプリントのところに行く前に構文エラーで落ちてしまう為、確認できません。 間違いを探したいからデバッグしているのに、どうすれば良いか分かりません。 何か記述した変数内容がどうなっているのか、確認する方法はないでしょうか? うまく説明ができず、分かりづらいかもしれませんが、ご回答いただければ幸いです。

  • objective-cの変数結合について

    毎度お世話になります。 objective-cでのループ処理を利用したオブジェクトと変数の結合方法が分からなくて質問する事にしました。 私の検索方法が悪いのか見つからなかったので・・ phpでループを利用した変数の結合をする場合だと、 for($i = 0; $i < 2; $i++){ echo "com".$i; } でcom0とcom1の表現が問題なくいけますが、 objective-cではどのようになるのでしょうか。 初級的な質問で申し訳ないのですが、どうかよろしくお願いします。

  • 禁止ワードの設定

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

    • 締切済み
    • CGI
  • 禁止文字をエクセルかアクセスでチェックする方法について

    あるデータ一覧に、禁止文字が含まれているかをエクセルorアクセスで確認したいのですが、関数やSQLが分かりません。 どなたかお教え頂ければ大変助かります。 【やりたいこと】 「◆データ一覧」に、「◆禁止文字一覧」が含まれているかをデータチェックしたい。 以下の場合だと、「◆データ一覧の1、2レコードめ」がデータ精査結果になればOK。 ------------------------------------------ ◆データ一覧 1レコードめ  あいうAお 2レコードめ  かきくけB 3レコードめ  さしす1C ◆禁止文字一覧 1レコードめ  A 2レコードめ  B 3レコードめ  D ------------------------------------------ どうぞ、よろしくお願いいたします。

  • IFで処理を分けたい

    PHP4.4で掲示板を作成しています。 記事の削除時に、 ・入力された削除用パスワードがカラム「削除用パスワード」とマッチ  もしくは、管理者用パスワードとマッチしていたら、削除するように  そうでなかった場合は、それと分かるステータスを返すようにしたい  のですが、そのSQLの書き方がわかりません。 ここではPOSTされたパスワードは1234、管理者用パスワードは9999、テーブル名はbbs、記事IDを10と仮定して例を書きます。 SQLの文法としては滅茶苦茶かもしれませんが、大体こういう事をしたいという意味です。 case when (1234 == bbs.password or 1234 == 9999) then   delete from bbs where post_id=10; else   return -1; end return-1の理由は、パスワードが違っていたという事を知りたいからです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • プロバイダーを変更しようと思うのですが。

    今、T-COM(トーカイブロードバンドコミニュケーション)の プロバイダなのですが 3月からBフレッツにしようと思っています。(光) そうするとアドレスなどが変更してしまいますよね、 そしてT-COMの土地にホームページを置いています。 その場合ホームページの引越しはどうしたらいいのでしょうか? 自分の掲示板(BBS)もT-COMとは関係ないところに 3つ4つあります。 コレは消えてしまうのでしょうか?

専門家に質問してみよう