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で利用可能なスーパーグローバル変数

変数名内容
$_POSTPOST形式のHTMLフォームから渡された情報
$_GETクエリ情報(~?キー名=値)経由で渡された情報
$_FILESアップロードされたファイルに関数情報
$_SERVERリクエストヘッダー、またはサーバー固有の変数情報
$_ENVサーバー側で定義された環境変数
$_COOKIEクッキー経由で渡された情報
$_SESSIONセッション経由で渡された情報
$_REQUEST$_GET、$_POST、$_COOKIEの値をまとめて管理

$_REQAUESTは、$_GET/$_POST/$_COKIEの値をまとめて扱えて便利そうですが、次の理由から原則利用すべきではありません。

  • 同名のキーがあった場合に、片方のキーが上書きされてしまう
  • どこから受け取ったデータなのかあいまいになりやすい