再入力用のメールアドレスに誤りがないかをチェックするクラスがあったとします。
<?php class Email{ function equal($mail1,$mail2){ if(isset($mail1,$mail2)){ if($mail1 !== $mail2 ){ $error = '<div class="r_em">' . "メールアドレスが一致しません" . '</div>' ; return $error; } } } } ?> <tr> <td>E-mail</td> <td colspan="2"><input type="email" name="email1" maxlength="50" size="46" placeholder="info@example.com" ></td> </tr> <tr> <td>E-mail (確認用)</td> <td colspan="2"><input type="email" name="email2" maxlength="50" size="46" placeholder="info@example.com" ></td> <td><?php echo Email::equal($_POST['email1'],$_POST['email2']); ?></td> </tr>
色々整理してメソッドを引数で指定するような作りにしたのですが、
isset()で初回アクセス時は$_POSTを参照しないようにしてるのですが下記のように例外がでてしまいます。
Notice: Undefined index: email1 in C:\xampp\htdocs\xxx\register_ja.php on line 26
Notice: Undefined index: email2 in C:\xampp\htdocs\xxx\register_ja.php on line 26
何が原因でどうすれば解消されますか?
ちなみに引数で指定するような作りにする前の状態
function equal(){ if(isset($_POST['email1'],$_POST['email2'])){ if($_POST['email1'] !== $_POST['email2'] ){ $error = '<div class="r_em">' . "メールアドレスが一致しません" . '</div>' ; return $error; } } }
にしてみたら例外は表示されなくなりました。
しかし、これだと「そこ」でしか使えず別のプロジェクトへの使い回しができないので
引数で指定するような作りで例外が表示されないように解決したいのです。
別のプロジェクトでもname属性がemail1とemail2になるように注意すればいいだけかもしれませんが、
ちょっと気になったので質問してみました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/09 13:33