気になったところをいくつか。
php
1$email = $_POST['email'];
2$pass = $_POST['pass'];
3$pass_retype = $_POST['pass_retype'];
それぞれデータを受信していないときに参照するとNotice: Undefined indexのエラーを示すため、
変数の存在確認をisset()を使って行うか、あるいはfilter_input()を使うことをお勧めします。
php
1$email = '';
2if (isset($_POST['email'])) {
3 $email = $_POST['email'];
4}
5$pass = '';
6if (isset($_POST['pass'])) {
7 $pass = $_POST['pass'];
8}
9$pass_retype = '';
10if (isset($_POST['pass_retype'])) {
11 $pass_retype = $_POST['pass_retype'];
12}
もしくは
php
1$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
2$pass = filter_input(INPUT_POST, 'pass');
3$pass_retype = filter_input(INPUT_POST, 'pass_retype');
4}
filter_input()を使うときは念の為にPHP: フィルタの型 - Manualを参照して適切な検証フィルタや除去フィルタを活用することをお勧めします。
--
php
1define('MSG1' ,'入力必須です');
2
3$error_msg =array();
これらを特定のifブロック内だけで宣言してはいけません。
POSTで受信していようがいまいが、使える状態にしておく必要があります。
そんなわけで、少し勝手にいじくりました。
最初に表示したときにも、もう既にエラーメッセージが表示されてしまいますが。
filter_input()を使ってしまうと、空文字列を受信したのか、本当に未入力なのかの区別がつかないため、
厳密にやるならisset()を駆使した方が良いかもしれません。
それに、さらにパスワードの入力の検証も加えないといけないですね。
php
1<?php
2
3define('MSG1' ,'入力必須です');
4$error_msg =array();
5
6$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
7$pass = filter_input(INPUT_POST, 'pass');
8$pass_retype = filter_input(INPUT_POST, 'pass_retype');
9
10if(empty($email) or empty($pass) or empty($pass_retype)){
11 //var_dump($error_msg['none']);
12 $error_msg['none'] = MSG1;
13}
14
15
16?>
17<html>
18<head>
19</head>
20<body>
21 <form method="post">
22 <span class="error_msg"><?php if(!empty($error_msg['none'])) echo $error_msg['none']; ?></span>
23 email: <input type="text" name="email" placeholder="email" value="<?php echo $email; ?>" /><br />
24 pass: <input type="text" name="pass" placeholder="pass" value="<?php echo $pass; ?>" /><br />
25 pass_retype: <input type="text" name="pass_retype" placeholder="pass_retype" value="<?php echo $pass_retype; ?>" /><br />
26 <input type="submit" value="送信" />
27 </form>
28</body>
29</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/12 15:20