• ベストアンサー

確認のメールアドレスの比較の方法

フォームメールなどで、メールアドレスを入力違いを防ぐため、2回入力させ、違う場合はエラーメッセージを表示させたいのですが、どのように 記述すればよいでしょうか? ちなみに今使っているのでは、以下のような形で入力項目をチェックしています。どうぞよろしくお願いします。 if ($namae eq "") { &error("名前が入力されていません");} if ($post eq "") { &error("郵便番号が入力されていません");} if ($pref eq "") { &error("県名が入力されていません");} if ($address eq "") { &error("住所が入力されていません");} if ($phone eq "") { &error("電話番号が入力されていません");} if ($phone!~ /^\d{2,5}-\d{1,4}-\d{4}$/) { &error("電話番号は半角数字でハイフォンで区切って入力して下さい"); } if ($email eq "") { &error("メールアドレスが入力されていません");} if ($email =~ /\s|\,/) { &error("メールアドレスの入力が不正です");} if ($email !~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/) { &error("メールアドレスは半角で正しくご入力ください");} #if ($email !~ /(.+)\@(.+)\.(.+)/) { &error("メールアドレスの入力が不正です");}

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

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

  • ベストアンサー
  • 2NN
  • ベストアンサー率40% (143/353)
回答No.1

再入力のメールアドレスを$re_email などに格納させます。 if($email ne $re_email){ &error("再入力されたメールアドレスが一致しません"); }

yufu99
質問者

お礼

ありがとうございます。試してみます

その他の回答 (1)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

> 2回入力させ、違う場合はエラーメッセージを という部分は単に1回目と2回目を比較するだけですが、 入力されたメールアドレスが正しい形式かどうか調べるには?、ということですよね。 そのソースを見ると、カンマやスペース、2バイト文字が入っていたり、@より右にドットが一つも入っていない(これはコメントアウトされている)ものをエラーと判断していますが、厳密に判断できていないと思います。 どこまで厳密にチェックするかは別にして、perl でメールアドレスの正しい形式を判断するには、以下のページが参考になると思います。 http://www.din.or.jp/~ohzaki/perl.htm#Mail これにしたがってチェックすると、以下の関数を1つ用意しておけば、 if (!&mail_ok($email)) { &error("メールアドレスが正しくありません。");} というように書けます。 -------------------------------- sub mail_ok { my $mail_regex = q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} . q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} . q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} . q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} . q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} . q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} . q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} . q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} . q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} . q{^\x80-\xff])*\]))*}; if ($_[0] =~ /^$mail_regex$/o) { return 1; } else { return; } } --------------------------------

yufu99
質問者

お礼

ありがとうございます。試してみます

関連するQ&A

  • 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
  • preg_matchで全角数字のみ許可したいのです

    phpにてメールフォームを使用してます、 最近スパムメールが増えて来たので対処方法を考えました。 お問い合わせの電話番号が現在半角のみ対応してますが、 これを全角の数字のみ通る様にしたいと思います。 現在使用しているのは下記の通りです、 if (!$phone){error("電話番号を入力して下さい");} if ($phone){ if (!preg_match("/^\d{2,5}-?\d{1,4}-?\d{3,4}$/",$phone)) {error("電話番号の入力が不正です"); } } この何処を修正すれば良いのでしょうか? 自分なりに調べましたがお手上げでGive Up状態です。 ご存知の方が居られましたらお知恵をご教授頂ければ助かります。

    • ベストアンサー
    • PHP
  • メールアドレス確認 javascriptについて

    入力フォームのメール項目にて 1.メールアドレスチェック 2.メールアドレス(確認用) のアラート設定を行いたいのですが、下記、javascriptの変更をどのように行っていいかが分からず困っています。 どなたかご回答お願いできますでしょう!? ------javascript部分-------------- <script language="JavaScript" type="text/javascript"> function CheckForm(theform) { var FormOK = false; if (theform.email1.value == "") { FieldControl(theform.To, "「メールアドレス」を入力してください。"); }else if (theform.email2.value == "") { FieldControl(theform.To, "「メールアドレス(確認用)」を入力してください。"); }else if (theform.email2.value == "") { FieldControl(theform.To, "入力されたものが一致するように入力してください。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script> ------HTML部分-------------- <form action="" method="post" name="theform" onsubmit="return CheckForm(this);"> メールアドレス:<input size="40" name="email1">(半角英数字)<br><br> 確認用】:<input size="40" name="email2"><br><br> <input value="確認画面へ" name="submit" type="submit"> </form> 宜しくお願い致します。

  • Javascriptで必須項目とメールアドレスチェックを同時に行いたいのですが…

    Javascriptで入力フォームの必須項目とメールアドレスのチェックを行いたいため、下記の様に設定したのですが、メールアドレスが入っているか確認後、メールアドレスのチェックを行うにはどのように書けばいいでしょうか?(現在は、Emailは必ず入力して下さい。Emailアドレスをご確認下さい。のalertが同時にでてしまいます。)宜しくお願いします。 <script type="text/javascript"> <!-- function FormCheck(Form) { Error = new Array(); i = 0; // 選択リストのチェック if ((Form["naiyou"]) && (Form["naiyou"][0].selected == true)) { Error[i] = "お問合せ内容を選択して下さい。"; i++; } // 名前の入力チェック if ((Form["name"]) && (Form["name"].value == "")) { Error[i] = "お名前は必ず入力して下さい。"; i++; } // emailの入力チェック if ((Form["email"]) && (Form["email"].value == "")){ Error[i] = "Emailは必ず入力して下さい。"; i++; } if ((Form["email"]) && (!Form["email"].value.match(/^[A-Za-z0-9]+[\w-]+@[\w\.-]+\.\w{2,}$/))){ Error[i] = "Emailアドレスをご確認下さい。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert (ErrorText); return false; } } // --> </script>

  • フリーメールは投稿できないようにする掲示板

    お世話になります。 フリーメールで投稿できないようにするにはどうしたら良いのでしょうか? 恥ずかしいくらいの初心者ですので宜しくお願いします。 (※フリーメールって言っても、一般的な5・6社程度ですが…) if ($in{'email'} eq "") { &error("メールアドレスが記入されていません"); } if ($in{'email'} eq "*@yahoo.co.jp") { &error("フリーメールは使えません"); } if ($in{'email'} eq "*@hotmail.com") { &error("フリーメールは使えません"); }  ・  ・ ワイルドカードの使い方も実はわからないのです。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • メール入力→(確認)メール入力でのチェック

    よくフォームメールなどの、 メールアドレスを入力するところで、 もうひとつ同じアドレスを入力して、 内容が違っていないかエラーチェックを するものがありますよね。 例えば最初に入力したデータを$emailとしまして、 確認の入力データを $email1としたばあい、 比較して同じデータならエラーをださない。 違うもののばあいエラーをだすというのは、 どうすれば良いのでしょうか?? if ($email1 !=~ /$email/){ $errMsg .= ', e-mail(確認)'; $errNum++; $e_email1 = 1; } return $errNum; } いろいろ考えてみましたが、うまくいかないのです。 どなたかご教授お願いいたします。

    • ベストアンサー
    • CGI
  • メールアドレスが正しく認識されません

    タイトルの通りなのですが、メールマガジンやネット会員の新規入会の際に、メールアドレスを入力すると、 「メールアドレスの形式が不正です」 とか、 「入力されたメールアドレスの書式に誤りがあります」 となって、エラーになってしまいます。 当然、文字の半角や大文字、小文字などはチェックして誤りの無いようにしているのですが、何度やってもエラーになってしまいます。 そのままメールアドレスをコピーして、あて先にしてメールを送信すると、ちゃんと自分のパソコンに送信されて返ってきますので、メールアドレスは間違っていません。 どこがおかしいいのでしょうか? よろしくご指導ください。

  • 自分のメールアドレスの確認方法

    こんにちは、 自分の携帯番号のメールアドレスを忘れてしまいました。 どのようにすれば表示できるのでしょうか? 携帯電話 j-phone j-sh08 よろしくお願いします。

  • メールアドレス入力チェック

    毎回初心者な質問で申し訳ないです。 Strutsを使ってフォーム作成中なのですが、Validatorではなくjavaの中でエラーチェックをしています。 入力の有無でのエラーチェックはできたのですが、メールアドレスチェックができません。 自分としては 「1文字以上の半角英数記号」@「1文字以上の半角英数記号」 じゃなかったらエラーを返すようにしたいと思い以下のように記述しました。 if (mail != "[\\d[a-zA-Z]*]+@[\\d[a-zA-Z]*]"){ errors.add("mail", new ActionMessage("errors.mail")); } 動かしてみると何を入力してもエラーがかえるようになってしまいました。 正しい記述をご存知の方、ご教授ください。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 掲示板スパム対策(改造)ガードキー効かず

    二度目まして。 同掲示板で、ガードキー入力を必要とするようにしたいのですが、 うまく機能してくれません。 「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

専門家に質問してみよう