• ベストアンサー

perlで入力チェック

昨日ここでお世話になって無事プログラムが完成しました。でももう1個だけどうしても分からない事があるので 教えてください。 フォームで半角、全角数字の入力チェックを行おうとして正規表現を使おうと思ったのですが、perlのコードが分かりません。いろんなサイトを見てこれかな?ってのは探したのですが駄目でした。知恵をお貸しくださいませ。 if ($FORM{'kingaku'} ne *ここに入れるのがわかりませんT0T*) { &error("金額を数字で入力してください。"); } たぶん、これで入力チェックのはずですが・・違ったら指摘おねがいします。

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

  • ベストアンサー
  • Seiryo
  • ベストアンサー率13% (27/203)
回答No.1

昨日よりわかりやすい質問ですね。 if(($FORM{'kingaku'} =~ /^[0-9]+$/) == 0){ } 間違ってたらごめんなさいね

mitutoshi
質問者

お礼

本当にありがとうございます。できました。 昨日はどうもすみません。これから、勉強していきたいと 思います。ほんとうにありがとうございました。

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

関連するQ&A

  • 正規表現を使った入力値のチェック

    こんにちは、yukimura1024です。 perlでブラウザのフォームに入力された値をチェックしたいのですが、 入力された値が「全角文字のみか」と「全角カタカナのみか」 という2種類のチェックのしかたがわかりません。 「数値のみか」のチェックは正規表現を使ってできたのですが、 これと同じように正規表現を使って、この2つの全角チェックをする 方法はないでしょうか? 数値チェックは以下の方法でやっています↓ if ($str_txt_yuubin =~ /[^0-9]/) { print "「郵便番号」を半角数字で入力してください。<br>\n"; } ご存知の方がいましたら教えていただけると助かります。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • フォームの入力チェック

    いつも参考にさせて頂いています。 Perl初心者です。 フォームの入力チェックを作成したいと思っています。 チェック項目 ・会社名    → 空入力でないか、全角入力であるか ・住所     → 会社名のチェックと同様 ・電話番号   → 空入力でないか、半角であるか 処理 上の条件を満たさなかった場合は 「全角で入力してください。」や 「電話番号は半角数字で入力してください」 などといった コメントを付けたページを表示させる。 満たした場合は 「登録しました。」 というようなページを表示。 そこで、入力チェックの条件文を書いたのですが 空入力された場合の条件式がわかりません。 どなたか教えて下さる方がいらっしゃいましたら 宜しくお願いします。 また、入力チェック後のページ切り替えはどのように 行っているのでしょうか? 宜しくお願いします。 #-----社名チェック----- if ($name =~ /[\xA1-\xFE][\xA1-\xFE]/) { $namecheck = ""; } else { $namecheck = "全角入力をして下さい。"; } #-----住所チェック----- if ($adr =~ /[\xA1-\xFE][\xA1-\xFE]/) { $adrcheck = ""; } else { $adrcheck = "全角入力をして下さい。"; } #-----電話番号チェック----- if($tel =~ /^[0-9]+$/) { $telcheck = ""; } else { $telcheck = "電話番号は半角数字で入力してください。"; } ※会社名、住所の全角チェックはjcodeでEUC-JPに変換しています。

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

    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】にすると、半角、全角ともエラーとなってしまいます。 どのようにすれば、実装できるのでしょうか。 皆さん、よろしくお願いします。

  • フォーム入力のチェック

    フォームの入力をCGI(Perl)でチェックするとき、 全角の漢字、カタカナ、ひらがなでの入力以外は禁止にしたいです。 どなたかいい方法をご存知でしょうか? とりあえず、現在は、 jcode.plで全角英数字⇒半角英数字に変換 フォームに入力された文字列を一文字(半角2文字)ずつ抽出して、 $a=~ s/([^\w ])/'%' . unpack("H2", $1)/eg; でエンコードしたものが%を含んでいるかどうかで判別してます。 でもこれだと全角英数字と半角英数字しかシャットアウトできません。 記号文字なども入力出来ないようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • Perl UTF8 での氏名チェック

    ■環境 Linux, Perl 5.8 です。 画面(HTML)と処理(Perl)は分けて作成しており、Templateモジュールで画面表示を行っています。 HTMLもPerlも文字コードはUTF-8です。 ■質問 フォームからうけとった文字列で以下の文字以外をエラーとする入力チェック処理(正規表現)をUTF8用に作りたいです。 ・漢字 ・ひらがな ・全角記号(ー-のみ) ・全角スペース ・全角カタカナ(http://okwave.jp/qa4997637.html) 直前の全角カタカナチェック(http://okwave.jp/qa4997637.html)と類似しているのですが、別に質問させていただきました。 色々探してみたのですが、UTF8でそのようなチェックモジュールが見つからず、 正規表現で書くしかないのかと思い、正規表現でも書いてみましたがうまくいきませんでした。 チェックモジュールが存在するのであれば教えて頂きたいです。 または、以下のようなシンプルな書き方(以下はUTF8ではなくSJISの全角カタカナチェックですが)があればご教授頂きたいです。 また、文字コードの対応(例えば\x40が何の文字にあたるか)がUTF8で分かれば応用がきくのですが、 それも見つからなかったので、対応表、調べ方をご存知の方がいらっしゃったらご教授頂きたいです。 ・SJISの全角カタカナチェック if($data !~ /^(?:\x83[\x40-\x96])+$/){ $mes="全角カナ以外がありますよ"; } よろしくお願い致します。

  • Perl/CGIでのメール記入チェック方法

    メールの全角などの記入ミスをチェックする方法なのですが、現在 if($FORM{'mail'} eq ''){&error("戻ってメールアドレスを入力してください。");} if ($FORM{'mail'} =~ /\s|\,/) { &error("メールアドレスの入力が不正です。");} if ($FORM{'mail'} !~ /[\w\.\-\&]+\@[\w\.\-\&]+\.[\w\.\-\&]/) { &error("メールアドレスは半角で正しくご入力ください。");} のように記述しているのですが、この場合 あ@hogehoge.com → 「メールアドレスの入力が不正です。」 しかし、 あ1234@hogehoge.com → エラー表示せず となってしまいます。半角と全角が混在したらチェックできないのです。これを回避する方法はありますか? よろしくお願いします。

    • 締切済み
    • CGI
  • perl フォームの入力値のチェック セキュリティ

    フォームの入力値のチェック方法についての質問です。 名前、電話番号、Eメール、住所、注文商品、数量の入力フォームです。 入力値の取得は、ライブラリ「cgi-lib.cgi」を利用しています。 (以下perlのソース) #!/usr/bin/perl -T #入力値の取得 require 'cgi-lib.cgi'; &ReadParse(*form); $name = $form{'name'}; $tel = $form{'tel'}; $email = $form{'email'}; ・・・・以下同様の処理が続くだけなので省略 #サブルーチンを利用して入力値をチェック $name = &Wash($name); $tel = &Wash($tel); $email = &Wash($email); ・・・・以下同様の処理が続くだけなので省略 #サブルーチン部分 sub Wash{ if($_[0] =~ /^([^|><\/]+)$/){return $_[0];} elsif($_[0] eq undef){return "未入力";} else{return undef;} } (perlのソース ここまで) としてから、通常の処理に入るようにしてみたのですが セキュリティー上の問題があれば教えてください。 入力値から、コマンドやスクリプトが実行(XSS)されてしまう可能性はありますか? お願いします。 またメタ文字が見つかった場合の処理についてですが とりあえずよくわからないので。「undef」を返して いるのですが、他に良い方法があれば教えてください。

    • ベストアンサー
    • CGI
  • 全角漢字の入力チェック

    Javascriptにて、Formのテキストフィールドの内容を入力チェックしているのですが、「全角漢字」「全角かな」「全角カナ」「半角英数字」 のみを許可して、それ以外の入力文字をいれるとエラーになるような 関数を作りたいのですが、全角記号や半角記号をチェックするには どうしたらよいのでしょうか。

  • Perl UTF8 での全角カタカナチェック

    ■環境 Linux, Perl 5.8 です。 画面(HTML)と処理(Perl)は分けて作成しており、Templateモジュールで画面表示を行っています。 HTMLもPerlも文字コードはUTF-8です。 ■質問 フォームからうけとった文字列で全角カタカナと特定の全角記号以外はエラーとする 入力チェック処理(正規表現)がうまくチェックを行ってくれません。 SJISだと以下のような書き方があるそうなのですが、UTF8での書き方がわかりません。 ・SJIS if($data !~ /^(?:\x83[\x40-\x96])+$/){ $mes="全角カナ以外の文字が指定されています"; } UTF8での書き方を教えて頂きたいです。 なお、許容する全角カタカナと特定の全角記号は以下のとおりです。 ========================================================== アイウエオカキクケコサシスセソタチツテトナニヌネノ ハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン ァィゥェォッャュョヵヶヴガギグゲゴザジズゼゾダヂヅデド バビブベボパピプペポーヽヾ ========================================================== ご教授お願い致します。

  • Perlの正規表現(全角カナの判定について)

    Perlの正規表現について、教えてください。 HTMLのフォームからSJISでデータを受け取り、全角カナ(と、ーヽヾ)であるかどうかのチェックをしたいと思います。 if ($FORM{'FURIGANA'} =~ /(?:\x83[\x40-\x96]|\x81[\x45\x5B\x52\x53])/){ ; } else { ・・・・・ 上記であれば、$FORM{'FURIGANA'}に全角カナが一文字でも含まれていれば真、含まれていなければ偽で動くと思うのですが、では$FORM{'FURIGANA'}が全て全角カナであれば真、それ以外の文字が一文字でも含まれていれば偽という判定をするにはどのような表現にしたらよいのでしょうか。 いろいろ試してみたのですが、どうもうまくいきません。どうかお知恵をお貸し下さい。

    • ベストアンサー
    • Perl