第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)