

よろしくお願いします。

PHPにてformタグを生成し、input,submitで送ったデータを同ページで反映させたいと思いましたが、うまくいきませんでした。

以下、状況です。

`test.php`ファイル

[code]

    <form name="name" action="test.php" method="GET">
        <Label for="name">氏名:</Label>
        <input name="name" type="text">
        <input type="submit" value="送信">
    </form>
    
    <pre>
    <?php
    
    echo htmlspecialchars($_GET["name"]);
    
    ?>
    </pre>
    
[/code]

*htmlやbody等のタグは割愛しております。

同ページで氏名欄に任意の氏名を記述して送信を押すと、`Undefined index: name`エラーが発生してしまいます。

調べると`test.php`に初回アクセスした際に`($_GET["name"]);`が未定義のため発生するエラーらしく、  
対策として

[code]

    if (!empty($_POST["submit"])) {}
    
[/code]

もしくは

[code]

    if (isset($_POST["submit"])) {}
    
[/code]

を用いての定義確認をする

という旨の記事がありましたが、そもそも本文中において`$_GET["name"]`の定義とは何を指しているのでしょう。

`form`から送られた情報のタグ内には`name="name"`にて定義済み`GET`変数で`"name"`を取得できるのかと思いましたが、  
別途定義の必要性があるのでしょうか。

恐縮ですが、アドバイスいただけますと幸いです。


CC BY-SA 4.0
2020-07-25T08:06:00.667
68945
2020-08-10T23:55:27.340
2020-08-10T23:54:51.833
19110
question
php form
PHPにおけるGET,POSTでのUndefined index: nameエラーについて


注意していただきたいのはエラーの内容としては未定義の変数ではなくて、  
未定義の配列indexを参照しているということです。

自作の配列の変数の存在しないキーにアクセスしようとすると、同様のエラーになります。試してみてください。

通常は自作の配列の変数であればindexを宣言すれば済むのですが 、

`$_GET`はPHPで定義されるグローバルスコープな配列の変数のため宣言することができず、質問中のように存在するかチェックしてから使う必要があります。

> そもそも本文中において$_GET["name"]の定義とは何を指しているのでしょう

ということで  
ここは`$_GET`の配列のキーの定義を指しています。


CC BY-SA 4.0
2020-07-25T11:13:06.870
68953
2020-07-25T11:49:41.393
2020-07-25T11:49:41.393
22665
22665
68945
answer