
お問い合わせフォームを作っていて、入力内容のいずれかに空白があった場合に送信ボタンクリック時にエラーメッセージを出すようにしたいと思っています。
各サイトを参考にしながら以下のようにコードを組んでみたのですが、エラーメッセージを出すための制御文が動作していないようで、空白があった場合でもそのまま確認画面へと進んでしまいます(index.php → confirm.php → sent.phpと移動するように作っており、以下のコードの1つ目がindex.php、2つ目がconfirm.phpになります)。
試しにif(isset($_POST['submit']) && $_POST['submit'] === '送信')の部分を消すと今度は「お名前を入力してください。」などのメッセージが最初から表示されるようになります。そのためこのif文がおかしいような気がするのですが修正方法がわかりません。
似たような質問をいくつか見つけたのですが、自分の力ではいずれの方法でも解決に至らなかったため質問させていただきました。ご回答よろしくお願いいたします。
PHP
1<?php 2 $name = ''; 3 if(isset($_POST['name'])){ 4 $name = $_POST['name']; 5 } 6 $mail = ''; 7 if(isset($_POST['mail'])){ 8 $mail = $_POST['mail']; 9 } 10 $inquiry = ''; 11 if(isset($_POST['inquiry'])){ 12 $inquiry = $_POST['inquiry']; 13 } 14 15 function h($s) { 16 return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); 17 } 18 19 if(isset($_POST['submit']) && $_POST['submit'] === '送信'){ 20 if($name === ''){ 21 $error_message['name'] = 'お名前を入力してください。'; 22 } 23 if($mail === ''){ 24 $error_message['mail'] = 'メールアドレスを入力してください。'; 25 } 26 if($inquiry === ''){ 27 $error_message['inquiry'] = 'お問い合わせ内容を入力してください。'; 28 } 29 30 } 31?> 32 33<!DOCTYPE html> 34<html lang="ja"> 35 <head> 36 <meta charset="UTF-8"> 37 <title>お問い合わせフォーム</title> 38 <link rel="stylesheet" href="style.css"> 39 </head> 40 <body> 41 <div class="main"> 42 <div class="contact-form"> 43 <div class="form-title">お問い合わせ</div> 44 <form method="post" action="confirm.php"> 45 <div class="form-item">お名前</div> 46 <div class="error_message"><?php echo $error_message['name'] ?></div> 47 <input type="text" name="name"> 48 <div class="form-item">メールアドレス</div> 49 <div class="error_message"><?php echo $error_message['mail'] ?></div> 50 <input type="text" name="mail"> 51 <div class="form-item">お問い合わせ内容</div> 52 <div class="error_message"><?php echo $error_message['inquiry'] ?></div> 53 <textarea name="inquiry"></textarea><br> 54 <input type="submit" name="submit" value="送信"> 55 </form> 56 </div> 57 </div> 58 </body> 59</html>
PHP
1<?php 2 $name = ''; 3 if(isset($_POST['name'])){ 4 $name = $_POST['name']; 5 } 6 $mail = ''; 7 if(isset($_POST['mail'])){ 8 $mail = $_POST['mail']; 9 } 10 $inquiry = ''; 11 if(isset($_POST['inquiry'])){ 12 $inquiry = $_POST['inquiry']; 13 } 14 15 function h($s) { 16 return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); 17 } 18?> 19 20<!DOCTYPE html> 21<html lang="ja"> 22 <head> 23 <meta charset="UTF-8"> 24 <title>お問い合わせフォーム</title> 25 <link rel="stylesheet" href="style.css"> 26 </head> 27 <body> 28 <div class="main"> 29 <div class="contact-form"> 30 <div class="thanks-message">以下の内容でよろしいですか?</div> 31 <form method="post" action="sent.php"> 32 <input type="hidden" name="name" value="<?php echo h($name) ?>"> 33 <input type="hidden" name="mail" value="<?php echo h($mail) ?>" > 34 <input type="hidden" name="inquiry" value="<?php echo h($inquiry) ?>"> 35 <div class="form-title">入力内容</div> 36 37 <div class="form-item">●お名前</div> 38 <?php echo h($name) ?> 39 40 <div class="form-item">●メールアドレス</div> 41 <?php echo h($mail) ?> 42 43 <div class="form-item">●お問い合わせ内容</div> 44 <?php echo h($inquiry) ?> 45 <br> 46 <input type="button" value="戻る" onclick="history.back()"> 47 <input type="submit" value="送信する"> 48 </form> 49 </div> 50 </div> 51 </body>

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/18 04:45 編集
退会済みユーザー
2018/08/18 04:49
退会済みユーザー
2018/08/18 04:56
退会済みユーザー
2018/08/18 05:08
退会済みユーザー
2018/08/18 05:23