CGI-BBS > 基礎 > その他 > 入力チェックがうまくいきません〜


カレッヂ
カレッヂ


質問者 りょう  投稿日 3/11(日) 21:55:48
初歩的な質問で申し訳ないのですが・・・

メール記入で半角以外の場合にエラーとしたいのですが、
if ((!$email =~ /(.*)\@(.*)\.(.*)/) && $email ne '') { &error(miss_mail); }
としても、
if (!$FORM{'email'} =~ /(.*)\@(.*)\.(.*)/) && $FORM{'email'} ne '') { &error(miss_mail); }
としても、
エラーになりません。
どこがおかしいのでしょうか???
よろしくお願いします。

回答者 いのちゃん  [削除]  投稿日 3/12(月) 03:20:41
>if ((!$email =~ /(.*)\@(.*)\.(.*)/) && $email ne '') { &error(miss_mail); }
>としても、
>if (!$FORM{'email'} =~ /(.*)\@(.*)\.(.*)/) && $FORM{'email'} ne '') { &error
>(miss_mail); }>
としても、


1235: if ($in{'email'} ne '' && $in{'email'} !~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)
1236:{ push(@ERR,"Eメールを半角で正しく記述してください"); undef $in{'email'}; }
1237: elsif ($in{'email'} =~ /[;:,=\s]+/) { push(@ERR,"Eメールには;:,=が使えま
1238: せん"); }

上記はminibbs-ex-1.17よりコピーしたものですので有効かどうかテストして見て下さい。
回答者 羊相談員  [削除]  投稿日 3/12(月) 11:35:51
とほほのWWW入門では
if ($str =~ /^[\x80-\xff]*$/) { print "全角文字が含まれてます"; }
となっていました。
レスキューのやり方と全然違いますね。
なんでだなんでだろう。

参考
http://wakusei.cplaza.ne.jp/twn/wwwperl3.htm#IsJapanese
回答者 しあわせのツボ  [削除]  投稿日 3/12(月) 13:02:46
レスキューさんは「半角英数にマッチさせ、マッチしないものがあったら」、
とほほさんは「半角英数では使われない文字コードにマッチしたら」、
という処理のようですね。
アルゴリズムが違うだけで、結果はほぼ同じでしょう。
(この例ではレスキューさんの方が厳格なチェックになっています)
質問者 りょう  [削除]  投稿日 3/12(月) 18:29:38
ありがとうございます。
早速やってみたところ出来ました。
こんな初歩的なことで恥ずかしいなぁ〜と思いながらも・・・。
感動しました。
回答者 羊相談員  [削除]  投稿日 3/13(火) 13:17:15
そうか。
ASCIIコードの値が最も大きいDELが7Fだから
ということですね。
質問者 りょう  [削除]  投稿日 3/14(水) 21:50:05
ところで、「データ破損の可能性あり」っていうのはどういうことなのでしょうか???

今まで正常だったのですが・・・。
原因がさっぱりわかりません。
どなたか教えて下さい。

返信(回答)する


Web裏技