質問編集履歴

1 index.phpの他にconfirm.phpのコードも記載しました。

退会済みユーザー

退会済みユーザー

2018/08/18 13:42  投稿

お問い合わせフォームで入力内容に空白があった場合にエラーメッセージを出したい
お問い合わせフォームを作っていて、入力内容のいずれかに空白があった場合に送信ボタンクリック時にエラーメッセージを出すようにしたいと思っています。
試しにif(isset($_POST['submit']) && $_POST['submit'] === '送信')の部分を消すと今度は「お名前を入力してください。」などのメッセージが最初から表示されるようになります。そのためこのif文がおかしいような気がするのですが修正方法がわかりません。
似たような質問をいくつか見つけたのですが、自分の力ではいずれの方法でも解決に至らなかったため質問させていただきました。ご回答よろしくお願いいたします。
```PHP
<?php
   $name = '';
   if(isset($_POST['name'])){
       $name = $_POST['name'];
   }
   $mail = '';
   if(isset($_POST['mail'])){
       $mail = $_POST['mail'];
   }
   $inquiry = '';
   if(isset($_POST['inquiry'])){
       $inquiry = $_POST['inquiry'];
   }
   function h($s) {
       return htmlspecialchars($s, ENT_QUOTES, "UTF-8");
     }
   if(isset($_POST['submit']) && $_POST['submit'] === '送信'){
       if($name === ''){
           $error_message['name'] = 'お名前を入力してください。';
       }
       if($mail === ''){
           $error_message['mail'] = 'メールアドレスを入力してください。';
       }
       if($inquiry === ''){
           $error_message['inquiry'] = 'お問い合わせ内容を入力してください。';
       }
 }
?>
<!DOCTYPE html>
<html lang="ja">
   <head>
       <meta charset="UTF-8">
       <title>お問い合わせフォーム</title>
       <link rel="stylesheet" href="style.css">
   </head>
   <body>
       <div class="main">
           <div class="contact-form">
               <div class="form-title">お問い合わせ</div>
               <form method="post" action="confirm.php">
                   <div class="form-item">お名前</div>
                   <div class="error_message"><?php echo $error_message['name'] ?></div>
                   <input type="text" name="name">
                   <div class="form-item">メールアドレス</div>
                   <div class="error_message"><?php echo $error_message['mail'] ?></div>
                   <input type="text" name="mail">
                   <div class="form-item">お問い合わせ内容</div>
                   <div class="error_message"><?php echo $error_message['inquiry'] ?></div>
                   <textarea name="inquiry"></textarea><br> 
                   <input type="submit" name="submit" value="送信">
               </form>
           </div>
        </div>
   </body>
</html>
```  
 
```PHP  
<?php  
   $name = '';  
   if(isset($_POST['name'])){  
       $name = $_POST['name'];  
   }  
   $mail = '';  
   if(isset($_POST['mail'])){  
       $mail = $_POST['mail'];  
   }  
   $inquiry = '';  
   if(isset($_POST['inquiry'])){  
       $inquiry = $_POST['inquiry'];  
   }  
 
   function h($s) {  
       return htmlspecialchars($s, ENT_QUOTES, "UTF-8");  
     }  
?>  
 
<!DOCTYPE html>  
<html lang="ja">  
   <head>  
       <meta charset="UTF-8">  
       <title>お問い合わせフォーム</title>  
       <link rel="stylesheet" href="style.css">  
   </head>  
   <body>  
       <div class="main">  
           <div class="contact-form">  
               <div class="thanks-message">以下の内容でよろしいですか?</div>  
               <form method="post" action="sent.php">  
                   <input type="hidden" name="name" value="<?php echo h($name) ?>">  
                   <input type="hidden" name="mail" value="<?php echo h($mail) ?>" >  
                   <input type="hidden" name="inquiry" value="<?php echo h($inquiry) ?>">  
                   <div class="form-title">入力内容</div>  
 
                   <div class="form-item">●お名前</div>  
                   <?php echo h($name) ?>  
                     
                   <div class="form-item">●メールアドレス</div>  
                   <?php echo h($mail) ?>  
 
                   <div class="form-item">●お問い合わせ内容</div>  
                   <?php echo h($inquiry) ?>  
                   <br>  
                   <input type="button" value="戻る" onclick="history.back()">  
                   <input type="submit" value="送信する">  
               </form>  
           </div>  
       </div>  
   </body>  
```
  • PHP

    31204 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る