第8章 リクエスト情報 / 第1回 模擬試験
PHPの`$_GET`と`$_POST`に関する次の記述のうち、正しいものはどれか。
`$_GET`は、HTTPリクエストボディからデータを取得する。
`$_POST`は、URLのクエリ文字列からデータを取得する。
`$_GET`と`$_POST`は、どちらもスーパーグローバル変数である。
正解
`$_GET`で送信されたデータは、URLに表示されない。
解説
`$_GET`と`$_POST`はどちらもPHPが自動的に用意する「スーパーグローバル変数」で、関数やクラスのスコープに関係なくどこからでも参照できます。
他の選択肢が誤りである理由は次の通りです。
・`$_GET`はURLのクエリ文字列(`?`以降のパラメータ)からデータを取得します。HTTPリクエストボディから取得するのは`$_POST`の役割です。
・`$_POST`はHTTPリクエストボディ(フォーム送信など)からデータを取得します。URLのクエリ文字列から取得するのは`$_GET`の役割です。
・`$_GET`で送信されたデータはURLのクエリ文字列としてそのままブラウザのアドレスバーに表示されます。パスワードなど見せたくない情報の送信には`$_GET`は適しません。
例:
```
// GET /search.php?keyword=php
echo $_GET['keyword']; // php
```
(参照: 独習PHP 第4版 第8章 リクエスト情報 8.2節, 8.3節 p.355〜367)