$_POSTや$_GET(フォーム入力値やURLパラメータ)から値を受け取る処理でよく発生します。原因は、そのスクリプトへの初回アクセス時と2回目以降のアクセスで処理を切り分けていないことが考えられます。たとえば、「送信する」ボタンをクリックした後にフォーム入力値を受け取るスクリプトの場合、そのスクリプトに最初にアクセスしたときは$_POSTには何も入っていないので、このエラーメッセージが表示されます。
<?php echo $_POST["test"]; ?>
対処方法として、「$_POST[“test”]に値が入っているときは…」という条件を設定する方法があります。
<?php if (isset($_POST["test"])) { echo $_POST["test"]; } ?>
これにより、初回アクセス時は$_POSTを参照しないので、エラーメッセージは表示されなくなります。
このエラーメッセージはNoticeレベル(注意)なので、とりあえずの対処でエラーメッセージを非表示にする方法もあります。
【関連記事】「Notice: Undefined variable:」と表示されるとき
定番のエラーメッセージを予習したい方におすすめの本
「Notice: Undefined index」の他にも定番のエラーメッセージはいくつかあります。そんな定番エラーメッセージを予習しておきたい方にはこの本をおすすめします(私が書いた本ですが)。ゼロから書けば早く完成できるスクリプトでも「なぜエラーになるのか?」「どこが間違っているのか?」と聞かれると意外とすぐに答えられなかったりします。基礎力のチェックも兼ねて暇なときに読んでみてください。
「PHP「直す力」養成ドリル」について詳しくはこちら