前提
PHPで質問フォームを作っており、文字が11文字以上や空白だと「入力は必須入力です。10文字以内でご入力ください。」が出るなどの入力チェックを行っています
実現したいこと
入力チェックをした際に、11文字以上や空白だとメッセージがきちんと出るが、10文字以下、入力がある場合に
「Warning: Undefined array key "name" in C:\xampp\htdocs\04_php_form\contact1.php on line 44」のエラーが出ます。
発生している問題・エラーメッセージ
Warning: Undefined array key "name" in C:\xampp\htdocs\04_php_form\contact1.php on line 44
該当のソースコード
<?php $error = []; if($_SERVER['REQUEST_METHOD'] === 'POST'){ if($_POST['name'] === ' ' or strlen($_POST['name']) > 10){ $error['name'] = 'blank'; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="base2.css"> <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> <meta name="viewport" content="width=device-width,initial-scale=1"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <div class="otoiawase"> <div class="otoiawase2"> <h1>お問い合わせ</h1> <div class="nyuryoku"> <form method="post" action="" > <p class="nyuryokus">氏名<span>*</span></p> <?php if($error['name'] === 'blank'): ?> <p class="error_msg">氏名は必須入力です。10文字以内でご入力ください。</p> <?php endif;?> </div> <input class="bottun" type="submit" value="送信"></a> </form> </div> </div> </div> </body> </html>
試したこと
$error['name']が'blank'ではないときに空になるのかと思い、
elseifで<p></p>と書いてみたが変わらなかった。
エラー名で調べてみて、isset()で変数がセットされているかを調べ「true」が返された場合のみ処理を実行するようにする方法も利用できます。
という記事を見たので if(isset($_POST['name']) === ' ' or strlen(isset($_POST['name'])) > 10){}
で実行してみたが変わらなかった。
youtubeの「フォームを作ってみよう」を見ながら作成しているのですが、
どうしても何が間違っているかわかりませんでした。
よろしければエラーの原因のご指摘お願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。