第8章 リクエスト情報 / 第2回 模擬試験
PHPの`$_REQUEST`スーパーグローバル変数に関する次の記述のうち、正しいものはどれか。
`$_REQUEST`にはGET・POST・Cookieのデータが含まれ得る。
正解
`$_REQUEST`はGETデータのみを含む。
`$_REQUEST`はセキュリティ上、`$_GET`や`$_POST`より推奨される。
`$_REQUEST`は配列ではなく文字列として扱われる。
解説
`$_REQUEST`スーパーグローバル変数には、既定の設定(`php.ini`の`request_order`)に従って、GETパラメータ・POSTパラメータ・Cookieのデータが混在して含まれ得ます。
他の選択肢が誤りである理由は次の通りです。
・`$_REQUEST`はGETデータだけでなく、POSTやCookieのデータも含みます。
・データの出所(GET経由なのかPOST経由なのか、あるいはCookieなのか)が判別しにくいため、多くの現場では意図が明確な`$_GET`/`$_POST`を明示的に使うことが推奨されており、`$_REQUEST`はむしろ避けられる傾向にあります。
・`$_REQUEST`も他のスーパーグローバル変数と同様に連想配列であり、文字列ではありません。
例:
```
// $_GET['id']か$_POST['id']かを意識せず取得できてしまうため意図しない上書きに注意
$id = $_REQUEST['id'] ?? null;
```
(参照: 独習PHP 第4版 第8章 リクエスト情報 8.2〜8.3節 p.355〜367)