メールアドレスが同じか比較し、異なった場合には違うという表示をさせたいのですが、なかなかうまくいきません。
nameがemail1とemail2の入力フィールドがあり、
処理は下記コードでしております。
if($_POST['email2'] !== $_POST['email1'] ){ $error = "メールアドレスが一致しません。" ; } else { $error = "メールアドレスは一致しています。" ; }
上記のコードでテストすると、初回アクセス時(最初)から
メールアドレスが一致しません
と表示されてしまっています。
ユーザーはまだ何も入力していないので、異常表示がされてはいけません。
一応、同じアドレスと異なるアドレスを入れてテストしてみると、条件通りに表示はされます。
このメールのチェック処理は最終的にはクラス化して部品として使いまわしていきたいです。
class Email{ function collation(){ if($_POST['email2'] !== $_POST['email1'] ){ $error = "メールアドレスが一致しません。" ; return $error; } else { $error = "" ; return $error; } } }
①同じアドレスだった場合、異常表示することは何もないので下記のように書いてました。
if($_POST['email2'] !== $_POST['email1'] ){ $error = "メールアドレスが一致しません。" ; }
すると、例外エラーが発生するのでなんでだろうと思いつつ、
falseの場合の処理(冒頭のコード)も加えると例外がなくなりました。
でも、falseの時は異常表示する必要はないので
たった数行ですがコード的にも必要ない書き方があれば教えて頂きたいです。
②問題点その2として、初めてそのページにアクセスした場合だけ、
例外のUndefined indexが出てきています。
適当に送信するボタンをクリックするとこの例外は消えてます。
その後、同じアドレスと異なるアドレスを入れてテストしてみると、条件通りに表示はされます。
例外の詳細は
email1 in C:\xampp\htdocs\xxx\register.php on line 6
email2 in C:\xampp\htdocs\xxx\register.php on line 6
で、該当箇所は
if($_POST['email2'] !== $_POST['email1'] )
です。
初回アクセス時は$_POSTを参照させなければいいと思い。
if(isset($_POST['email2']) !== isset($_POST['email1']) )
に改良しました。
これで初回アクセス時には例外エラーは表示されなくなりました。
しかし今度は、同じアドレスと異なるアドレスを入れてテストしてみると、何も表示されなくなりました。
何が原因でどうしたら解決されるでしょうか...
【追記】
こうでしょうか!?
class mail{ function collation(){ if(isset($_POST['email2'])){ if($_POST['email2'] !== $_POST['email1'] ){ $error = "メールアドレスが一致しません。" ; return $error; } else { $error = "" ; return $error; } } } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/09 13:30