前提・実現したいこと
Unidentified indexのエラーが出てきます。
たにぐち まことさんのYouTube動画を見ながらお問合せフォームを作成している最中にエラーが表示されました。
動画URL(https://www.youtube.com/watch?v=tHLnMiRXzNw&t=81s)
入力項目が空欄の際にエラーメッセージを出力する機能を実装しているのですが、値が入力された際に「Unidentified index」のエラーが出てしまいます。
もともと、このファイルにアクセスした際に同じ「Unidintified index」のエラーが表示されていたので、現在のコードのように「isset」を付けました。するとそのエラー表示が消えたので一安心していましたが、値を入力してEnterを押すと、このエラーが出るようになってしまいました。
動画内では、issetすら使っておらず、それでもエラー表示はされていません。
動画内のコードもGitHubに掲載されているので、それと比べてみましたが、異なるところはありません(最後まで完成していないので、その部分は異なっています。)
何が原因なのでしょうか?
発生している問題・エラーメッセージ
Notice: Undefined index: name in C:\xampp\htdocs\contactform2\index.php on line 44 Notice: Undefined index: email in C:\xampp\htdocs\contactform2\index.php on line 53
該当のソースコード
PHP
1<?php 2$error = []; 3 4if ($_SERVER['REQUEST_METHOD'] === 'POST') { 5 $post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); 6 7 // フォームの送信時にエラーをチェックする 8 if ($post['name'] === '') { 9 $error['name'] = 'blank'; 10 } 11 if ($post['email'] === '') { 12 $error['email'] = 'blank'; 13 } 14 if ($post['comments'] === '') { 15 $error['comments'] = 'blank'; 16 } 17} 18?> 19 20<!doctype html> 21<html lang="ja"> 22 <head> 23 <!-- Required meta tags --> 24 <meta charset="utf-8"> 25 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 26 27 <!-- Bootstrap CSS --> 28 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> 29 30 <link rel="stylesheet" href="style.css"> 31 32 <title>お問合せフォーム</title> 33 </head> 34 <body class="bg-light"> 35 <div class="container"> 36 <div class="row"> 37 <div class="card my-5 col-md-6 offset-3"> 38 <h2 class="mx-auto mt-3">お問合せフォーム</h2> 39 <form action="" method="POST" novalidate> 40 <div class="formfroup mt-3"> 41 <label for="name"><span class="hissu">必須</span>名前</label> 42 <input type="text" name="name" class="form-control" required autofocus> 43 <?php if (isset($_POST['name'])) { 44 if ($error['name'] === 'blank'){ 45 echo "<p class='error-msg'>※お名前をご記入ください。</p>"; 46 }; } 47 ?> 48 </div> 49 <div class="formfroup mt-3"> 50 <label for="email"><span class="hissu">必須</span>メールアドレス</label> 51 <input name="email" type="text" class="email form-control" id="email" required> 52 <?php if (isset($_POST['email'])) { 53 if ($error['email'] === 'blank'){ 54 echo "<p class='error-msg'>※メールアドレスをご記入ください。</p>"; 55 }; } ?> 56 </div> 57 <div class="formfroup mt-3"> 58 <label for="age"><span class="hissu">必須</span>年齢</label> 59 <select name="age" name="age" class="form-control" id="age" value="<?php echo htmlspecialchars($post['age']); ?>" required> 60 <option>年齢を選んでください</option> 61 <?php 62 for ($i = 18; $i <=60; $i++){ 63 echo "<option value=".$i.">".$i."</option>"; 64 } 65 ?> 66 </select> 67 </div> 68 <div class="formfroup mt-3"> 69 <label for="comments"><span class="hissu">必須</span>コメント</label> 70 <textarea name="comments" class="form-control" name="comments" id="comments" cols="40" rows="7" value="<?php echo htmlspecialchars($post['comments']); ?>" required></textarea> 71 <?php if (isset($_POST['comments'])) { 72 if ($error['comments'] === 'blank'){ 73 echo "<p class='error-msg'>※コメントをご記入ください。</p>"; 74 }; } ?> 75 </div> 76 <div class="formfroup mt-3"> 77 <input type="submit" class="submit_button my-3" value="内容確認へ"> 78 </div> 79 </form> 80 </div> 81 </div> 82 </div> 83 84 85 86 <!-- Optional JavaScript --> 87 <!-- jQuery first, then Popper.js, then Bootstrap JS --> 88 <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> 89 <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> 90 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> 91 </body> 92</html>
試したこと
Unidentified indexのエラー表示はissetやemptyで解消することが多いようですが、値の入力時に出てしまうのはナゾです。
ちなみに、Line44は「if ($error['name'] === 'blank'){」の部分で、53は「if ($error['email'] === 'blank'){」の部分です。
補足情報(FW/ツールのバージョンなど)
プログラミング学習を初めて1か月ほどなので、いろいろと基本的なところが抜けているかもしれませんが、そういった点もご指摘いただけると幸いです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。