第8章 リクエスト情報 / 第1回 模擬試験

`$_SERVER`グローバル配列に関する次の記述のうち誤っているものはどれか。

`$_SERVER['PHP_SELF']`要素は、現在のリクエストのURLのパス名部分を保持する。
Webブラウザが現在のページをリクエストするのに使ったHTTPメソッドは、`$_SERVER['REQUEST_METHOD']`に保持される。
`$_SERVER['REMOTE_ADDR']`要素は、Webサーバにリクエストを行ったユーザのIPアドレスを保持する。
`$_SERVER['QUERY_STRING']`要素は、URLの疑問符`?`の前に続くURLパラメータを保持する。 正解
解説
`$_SERVER['QUERY_STRING']`要素は、URLの疑問符`?`の後ろに続くパラメータ部分(例: `https://example.com/page?id=1&sort=asc`の`id=1&sort=asc`)を保持します。「前に続く」は誤りです。 他の選択肢が正しい理由は次の通りです。 ・`$_SERVER['PHP_SELF']`は、実行中スクリプトのドキュメントルートからの相対パス(クエリ文字列を含まないパス部分)を保持します。 ・`$_SERVER['REQUEST_METHOD']`には`GET`、`POST`、`PUT`など、リクエストに使われたHTTPメソッドの文字列が入ります。 ・`$_SERVER['REMOTE_ADDR']`には、リクエスト元クライアントのIPアドレスが入ります(リバースプロキシ経由の場合は別途`X-Forwarded-For`などを確認する必要があります)。 例: ``` // https://example.com/page.php?id=1&sort=asc へのアクセス echo $_SERVER['QUERY_STRING']; // id=1&sort=asc ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.4節 ヘッダー情報——$_SERVER p.368)