- ベストアンサー
swich文を使ったメールフォームの作成について
- swich文を使用してメールフォームを作成する方法について解説します。
- メールフォームの入力画面と入力チェック画面を作成し、入力内容を確認できるようにします。
- 入力内容が正しい場合は送信画面に進み、再入力が必要な場合はエラーメッセージを表示します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ロジックとテンプレートは別けて書いた方がプログラムが見やすくなって、デバッグや改修が簡単になります。 MVCを意識して書いた方がPHPも使い易くなっていいですよ。 <?php // Error indicate. $error_msg = ''; /*--- Form mode ---*/ $mode = isset($_POST["mode"]) ? htmlspecialchars($_POST["mode"]) : "input"; /*--- 入力項目 ---*/ $mail = (isset($_POST["mail"])) ? htmlspecialchars($_POST["mail"]) : ""; switch ($mode) { /*--- 入力画面 ---*/ case 'input': ?> <html> <body> <form enctype="multipart/form-data" action="inquiry.php" method="post"> <input type="hidden" name="mode" value="check" /> <div>* メールアドレス<input name="mail" type="text" value="'.$mail.'" size="" /></div> <div><input type="submit" value="確認する" /></div> </form> </body> </html> <?php break; /*--- 入力チェック画面 ---*/ case 'check': //----------------------------------------- // 入力チェック。 //----------------------------------------- //User Mail. if ($mail == "") { //未入力処理。 $error_msg ='<font color="red">未入力...</font>'; } else if ( ereg("^[^@]+@[^.]+\..+", $mail) == false ) { //書式処理。 $error_msg ='メールアドレスの書式が正しくありません。'; } if ($mail != "") { // 全角を半角に。 $mail = mb_convert_kana($_POST["mail"], "a", "utf-8"); } ?> <html> <body> <h1>ご入力内容をご確認してください。</h1> <div>* メールアドレス<br /><?php echo $mail; ?></div> <?php /*--- 未入力画面 ---*/ if ($error_msg != '') { ?> <div> <?php echo $error_msg; ?><br /> <form action="inquiry.php" method="post"> <input type="hidden" name="mode" value="input" /> <input type="hidden" name="mail" value="<?php echo $mail; ?>" /> <input type="submit" value="戻る" /> </form> </div> </body> </html> <?php } /*--- 送信可能画面 ---*/ } else { ?> <form action="inquiry.php" method="post"> <input type="hidden" name="mode" value="send" /> <input type="hidden" name="mail" value="<?php echo $mail; ?>" /> <input type="submit" value="送信" /> </form> <form action="inquiry.php" method="post"> <input type="hidden" name="mail" value="<?php echo $mail; ?>" /> <input type="submit" value="戻る"> </form> </body> </html> <?php } /*--- 送信画面 --*/ case 'send': } ?>
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5238/13705)
エラーメッセージと本文を分けるのが一番早いのではないかと思います。
お礼
回答ありがとうございます。 出来ればPGを書いていただければと思いました。
お礼
長文の回答を頂きありがとうございます。たしかに分かりやすいですね。