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