PHP入門 PHPでリクエスト情報の扱いについて
PHPでリクエスト情報を扱うスーパーグローバル変数について解説しています。
リクエスト情報とは
クライアントからサーバーに送信される情報のことをリクエスト情報と呼びます。また、HTTPとはサーバーとクライアントがお互いに通信する際に利用するプロトコルのことで、クライアントの要求に対してサーバーが応答するときの、情報のやり取りの手段を決めています。
HTTPプロトコルのリクエスト/レスポンスは以下の表の部分から構成されます。
HTTP通信の構成
| 分類 | 項目 | 概要 |
|---|---|---|
| リクエスト | HTTPメソッド | サーバーに対する直接の要求と取得するパス |
| リクエストヘッダー | リクエストの構成情報、クライアント情報など | |
| リクエストボディ | 送信されたデータ | |
| レスポンス | HTTPステータス | サーバーでの処理結果を表すコードとメッセージ |
| レスポンスヘッダー | コンテンツの構成情報、サーバー情報など | |
| レスポンスボディ | コンテンツ本体 |
HTTPメソッドとHTTPステータス
HTTPメソッドは、クライアントからサーバーに対して発行する直接の命令で、メソッド名、プロトコル情報で構成されます。

GETは、指定したコンテンツを取得するための命令で、HTTPで用意されている命令の中でも最も基本的なものです。HTTPメソッドがクライアントからサーバーへの指示を表すのに対して、サーバーでの処理結果を表すのがHTTPステータスです。

「200 OK」は、サーバーでの処理が正しく終了して応答が返されたことを表すメッセージです。
HTTPで利用可能なHTTPステータス
| 分類 | HTTPステータス | 意味 |
|---|---|---|
| 100(情報) | 100 Continue | 接続可能 |
| 200(成功) | 200 OK | 成功 |
| 201 Created | 成功(サーバー側に新しいリソースを生成) | |
| 202 Accepted | 受付完了(未処理) | |
| 300(リダイレクト) | 301 Moved Permanently | リソースが恒久的に移動した |
| 302 Found | リソースが一時的に移動した | |
| 303 See Other | リソースが別の場所に存在する | |
| 304 Not Modified | リソースが変更されていない | |
| 400(クライアントエラー) | 400 Bad Request | 不正なリクエスト |
| 401 Unauthorized | HTTP認証を要求 | |
| 403 Forbidfden | アクセスを拒否 | |
| 404 Not Found | リソースが見つからない | |
| 405 Method Not Allowed | HTTPメソッドが不許可 | |
| 407 Proxy Authentication Required | プロキシで認証の必要がある | |
| 408 Request Time-out | リクエストタイムアウト | |
| 500(サーバーエラー) | 500 Internal Server Error | サーバーエラー |
| 501 Not Implemented | 応答に必要な機能が未実装 | |
| 503 Service Unavailable | HTTPサーバーが利用不可 |
スーパーグローバル変数
PHPでは、リクエスト情報を取得/操作するためにスーパーグローバル変数という特別な変数を公開しています。特別というのは、スーパーグローバル変数が他の変数と違って自分で用意する必要のない変数だからです。PHPが自動的にリクエスト情報などを解析し、必要な情報をスーパーグローバル変数として用意してくれます。そのため、スクリプト側ではこれを参照するだけで必要な情報を取得することができます。
PHPで利用可能なスーパーグローバル変数
| 変数名 | 内容 |
|---|---|
| $_POST | POST形式のHTMLフォームから渡された情報 |
| $_GET | クエリ情報(~?キー名=値)経由で渡された情報 |
| $_FILES | アップロードされたファイルに関数情報 |
| $_SERVER | リクエストヘッダー、またはサーバー固有の変数情報 |
| $_ENV | サーバー側で定義された環境変数 |
| $_COOKIE | クッキー経由で渡された情報 |
| $_SESSION | セッション経由で渡された情報 |
| $_REQUEST | $_GET、$_POST、$_COOKIEの値をまとめて管理 |
$_REQAUESTは、$_GET/$_POST/$_COKIEの値をまとめて扱えて便利そうですが、次の理由から原則利用すべきではありません。
- 同名のキーがあった場合に、片方のキーが上書きされてしまう
- どこから受け取ったデータなのかあいまいになりやすい