世の中のどのアプリケーションでも、入力を受け取って、あらかじめ決められた処理を行い、最終的な結果を出力する流れは同じです。
今回はその中でも重要なリクエスト情報について解説したいと思います。
リクエスト情報について
クライアントからサーバに送信される情報をリクエスト情報と呼びます。ただ、リクエスト情報といってもブラウザは様々な情報を送り出しています。このあたりのことを理解するにはHTTPの理解が欠かせないでしょう。
HTTPとは
HTTPとはサーバとクライアントがお互いに通信する際に利用するプロトコルです。クライアントの要求に対して、サーバが応答するときの情報のやり取りの方法を決めています。
ただ、更に細部を明らかにするには、必要なことがあります。
HTTPメソッドです。
HTTPメソッドとは
HTTPメソッドとはクライアントからサーバに対して発行する直接の命令でメソッド名、パス、プロトコル情報で構成されます。
1 |
GET /php/laravel/laravel.php HTTP/1.1 |
GETは、指定したコンテンツを取得するための命令で、HTTPで用意されている命令の中でも最も基本的なものになります。
スーパーグローバル変数
HTTP通信の基本を理解したところで、ここからは問題であるリクエスト処理についてみていくことにします。
PHPでは、リクエスト情報を取得・操作するためにスーパーグローバル変数という特別な変数を公開しています。
なぜ、スーパーグローバル変数が特別かというと、スーパーグローバル変数は他の変数と違い、自分で用意する必要のない変数だからです。
PHPが自動的にリクエスト情報などを解析し、重要な情報をスーパーグローバル変数として用意してくれているのです。
PHPで使用できるスーパーグローバル変数は下記になります。
変数名 | 内容 |
$_POST | POST形式でHTMLフォームから渡された値 |
$_GET | クエリ情報経由で渡された値 |
$_FILES | アップロードされたファイルに関する情報 |
$_SERVER | リクエストヘッダ、またはサーバ固有の変数情報 |
$_ENV | サーバ側で定義された情報 |
$_COOKIE | クッキー経由で渡された情報 |
$_SESSION | セッション経由で渡された情報 |
$_REQUEST | $_GET、$_POST、$_COOKIEの値をまとめて管理 |
$_REQUESTは一見便利そうに見えますが、次の理由から原則利用するのは控えましょう。
- 同名のキーがあった場合に片方のキーが上書きされてしまう
- どこから受け取ったデータなのかわからなくなる