この章のテーマ 1 章ではコンピュータとプログラムの関係、 Web アプリケーションについて解説し ました。本章ではいよいよ PHP について学習してきましよう。ただし、本章では PHP の文法の解説の前に、まず PHP の特徴と PHP と深い関わりがある H 幵 P (Hyper Text Transfer Protocol) を説明します。 HTTP がどのように通信するの かについては、実際に通信内容を見ながら解説していきましよう。また、実際に PHP のプログラムも動かしてみます。 PHP の文法については 3 章から解説します ので、ここでは PHP の動作を中心に理解してください。 2-1 PHP とは ー PHP とはどんな言語か 2-2 Web アプリケーションの基礎 PHP の利用範囲 羨 PHP と WWW の仕組み - HITP のサンプル リクエストのヘッダ情報 HTTP レスポンス レスポンスのボディ情報 2-3 実際に試してみよう H 幵 P プロトコルを試してみる = ホスト指定したリクエスト 2-4 PHP 実行環境の準備 PHP の実行環境 単純な PHP プログラムの実行 G 釘リクエストの送信 HITP リクエストと HTF ・ P レスポンス HTTP リクエスト リクエストのボディ情報 、レスポンスのヘッダ情報 嚼 XAMPP のインストール この章を学習すると以下の知識をマスターできます。 ・ PHP の概要と特徴 ・ PHP と深い関わりがある HITP について概要を理解できる ・単純な PHP のプログラムを用意して実行し、動作を確かめることができる ・ telnet コマンドを利用した、 H 幵 P の通信の実験 の仕組みを学ぶことができる ・実際に H 幵 P の通信内容を見ながら、 HTTP のリクエストとレスポンスメッセー シ
KEYWORD ・ H ・灯 P リクエスト ・ HITP レスポンス ・ヘッダ ・ボディ 2-2 Web アプリケーションの基礎 HTTP リクエストと HTTP レスポンス 際、クライアント ( プラウザ ) は以下のようなメッセージを送信します ( リスト② -1 ) 。 まず HTTP による通信のサンプルを示します。 HTTP サーバーに要求を行う HTTP のサンプル メッセージボディ メッセージへッダ リクエスト行またはレスポンス行 図② -2 H 幵 P のメッセージ基本的な構成 ディ」で構成されています ( 図② -2 ) 。 HTTP のメッセージは「リクエスト行またはレスポンス行」「ヘッダ」と「ボ るプロトコルですので、内容を目で見て確かめることができます。 ます。また、 HTTP プロトコルは、バイナリ形式ではなくテキスト形式で通信す タの形式が決まっていて、そのデータの形式に従ってやりとりが規定されてい HTTP プロトコルでは、これら「リクエスト」と「レスポンス」についてのデー レスポンスはその要求に対して得られる結果を示します。 す。 H 幵 P リクエストとは HTTP サーバーに対して送信する要求を示し、 HTTP port protocol) 」というプロトコルのリクエストとレスポンスで成り立っていま 前章で書いたとおり、 Web アプリケーションは「 HTTP (Hyper Text Trans- Accept-Language: Ja'en-us;q=O. 7•en;q=O.3 Accept : text/html ja-JP-mac; て v : 1.9.0.1 ) User-Agent: MOZ 土 11a / 5.0 (Macintosh; 日 os セ : example.com POST /index. php HTTP/I.1 リスト② -1 印丁 P リクエストの例 U; 工 n セ e1 Mac OS X 10.5 ー
・ 7 8 第 1 章プログラミングの基礎知識と Web アプリケーション サーバーアプリケーションの代表は Apache Software foundation の 「 Apache 」やマイクロソフトの「 IIS (lnternet lnformation Service) 」などです。 Web プラウザは「 lnternet Explorer 」や「 Firefox 」が代表的でしよう。 プラウザはユーザーからの入力をサーバーに通知 ( リクエスト ) し、サーバー アプリケーションからの処理結果 ( レスポンス ) を画面に表示する機能を持って います。このとき、 Web サーバーと Web プラウザがネットワークを介して通信 する規約を HTTP (Hyper Text Transport ProtocoI) と呼びます。 Web プラウ ・ HITP (Hyper Text ザからは Web サーバーに対して、 HTTP の通信規約に従ったリクエストを送り、 Transport Protocol) サーバーアプリケーションが HTTP プロトコルに従ったレスポンスを送信します。 ・サーバーサイドアプリケーション サーバーアプリケーションは、クライアント (Web プラウザ ) が送信したリク 工ストを受け取るための窓口です。サーバーアプリケーションが受け取ったリク ェストを解釈し、処理の実行を担当するアプリケーションを選択して実行しま す。この際、サーバーアプリケーションから実行されるアプリケーションのこと ンの処理結果は、 HTTP プロトコルを利用し、クライアントのプラウザに送信さ れます。したがって、「 Web アプリケーション」と一概に呼んでいても、実際には Web ブラウザ、 H 幵 P サーバーアプリケーション、サーバーサイドアプリケーショ ンと多くのローカルアプリケーションが動作しており、それらが連携して結果的 に 1 つのアプリケーションのように見えるということになります。 KEYWORD をサーバーサイドアプリケーションと呼びます。サーバーサイドアプリケーショ Web アプリケーションの特徴①ー HTML ー Web サーバーとプラウザの通信には HTTP を利用しているわけですが、実際 にネットワーク上を流れている通信の中身はじつに多彩です。 図① -13 HT 「 P ではさまざまなデータがやり取りされる リクエストー HTM [ データ 画像データ に・一こ : こ : 4 第琶第をに : こ第物 0 - 一彡 ー web サーバー レスポンス ブラウザ
プログラミングの基礎知識 3 ー 1 ます。この場合はコマンドプロンプトなどを開き、次のように実行します。これ は、プログラムを test. php という名前で保存した場合です。 C:YStudY> php test.php 実行したいファイル名 ( この場合、ファイルは C 洋 study 以下に配置 ) これに対し、プラウザ経由で PHP の呼び出しを行った場合は、プラウザと PHP のインタブリタの間に H - 灯 P サーバーアプリケーション ( 注 3-4 ) が介在します。 2 章で勉強したように Web プラウザは HTTP サーバーに対してリクエストと レスポンスの送受信を行います。 HTTP サーバーが Apache の場合なら、 PHP のインタブリタは Apache の拡張機能モジュール mod ー php として用意されて います。 HTTP のリクエストメッセージに実行したい PHP のプログラムが指定される と、 Apache は mod ー php に PHP プログラムを実行させます。 PHP プログラムの 本書はト 4TTP サーバーアプリケー ションとして、もっとも一般的な 処理結果は Apache のレスポンスメッセージとしてクライアント ( プラウザ ) に Apache HTFP Server を例に説 返却されることとなります。 明しますが、 Windows 用に開発 されたマイクロソフトの IIS 自分の PC で Apache が動作している場合なら、プラウザに次の URL を入力 (lnternetlnformation Service) と PHP を組み合わせることなど してください ( 「 2-4 PHP 実行環境の準備」にしたがって、 C 洋 xampp h セ docs も可能です。 以下に tes セ hp を置いていることを前提としています ) 。 KEYWORD ・ HTTP サーバーアプリケーション ・リクエスト ・レスポンス ・ Apache ・ mod—php 注 3-4 h セ tp : / / 10Ca1h08t / tes セ・ worldl; の実行結果は、次 たとえば、先に示したコード echo ー he110 のように表示されるでしよう。 図 3-3 「 8h0 hello worldl ; 」の実行結果 トは p:/ ハ 0 「 0 旧 cst/t t. php - WiÅd6WsIötemetEkp 0 「ぐ 口 p : 川 hæt / t し P ャ x Live 5 田「 hello world 気 100 % マ ローカルイントラネットー保モー ド : 有効
2-4 PHP 実行環境の準備 配置できたら、 Web プラウザのアドレスパーから「 http://localhost/ helloworld. php 」と打ち、表示させてみてください。 正しく作成されていれば、図② -26 のように表示されるはずです。 図② -26 helloworld. php の表示結果 H 酬 0 wc ・新 dcws t 白 11 繖ゆ 0 / 磊 ースしⅳ eS を arc れ Dhttp://10cathcst/heIlowortdsphp ファイ舅区日編気 ( 印表示Ⅳ ) お気に入り ) ツールに ) ルプ但 ) 洋分 , ロ′朝 , 罍ページ旧マ 0 ツつし , Hello world! Current time is. 20 ー 11 一 20 17 : 50 図 〔ー朝インターネットー保護モード : 有効 気 100 % マ ページが表ミ 正しく表示されたでしようか ? Hello world の文字の下に日付と時刻が表示 されていると思います。もし正しく表示されたら、プラウザのリロードボタンを 何度か押してみてください。「 Current time is: 」の値が変化していくはすです。 表示できたら、次に、リスト② -4 のテキストを「 heIIoworld2. php 」として作成 し、プラウザに表示してみてください。 リスト② -4 単純な PHP のプログラム <?php ーこんにちは $a 一世界い <html> く head> く t 土セ le > He110 world く / セ土セ le > く / head> <bodY> く p > く ? p echO $a ? > く / > <P> く ?php echO $b ?></P> く /bodY> く /html > これも配置できたら、 web プラウザのアドレスパーから「 http: 〃 localhost/ helloworld2. php 」と打ち込み表示して見てください。 図② -27 のように表示されるはずです。
目次 目次 はじめに 本書の対象となる読者・・ 本書で学習するための前提知識・ プログラミング学習シリーズ PHP の構成 付録 CD-ROM の内容について・ 第 1 章プログラミングの基礎知識と Web アプリケー ション 1 -1 OS とアプリケーション 3 ハードウェアとソフトウェア・・ 3 OS は何をするのか①ハードウェア制御 4 OS は何をするのか②ソフトウェア制御 6 1 -2 アプリケーションが動くには アプリケーションが動くには、〇 S が解釈できるプログラムが必要 11 プログラムとは何か①コンバイル型言語 12 プログラムとは何か②インタブリタ型言語 14 1 -3 Web アプリケーションについて知ろう Web アプリケーションとローカルアプリケーション Web アプリケーションの特徴① HTML— Web アプリケーションの特徴②一言語ー Web ブラウザ内で動くプログラム 22 クライアントサイドプログラムの動作 23 サーバーサイドプログラムの実行①パフォーマンス 24 サーバーサイドプログラムの実行②リクエスト 26 28 1 練習問題 第 2 章 PHP と Web アプリケーション 29 2-1 PHP とは PHP とはどんな言語か PHP の利用範囲 2-2 Web アプリケーションの基礎 PHP とⅣ W の仕組み HITP リクエストと HITP レスポンス HT 「 P のサンプル HTTP リクエスト リクエストのヘッダ情報 リクエストのボディ情報 HI 丁 P レスポンス レスポンスのヘッダ情報 レスポンスのボディ情報 1 1 CO 4 ・ 4 LO 5 6 8 8 9 1- 4- CO ( 0 3 ( 0 CO っ f) ( 0 CO ( 0 ( 0 っ ) 4 4 一
・ 282 索引 記号 $ { 変数名 } ・ $GLOBALS 変数・ 番号 1 行コメント 2 進数・ 10 進数 10 進数 / 8 進数 / 16 進数・ 64 ビット旧 EE フォーマット Apache ・ ASCII•• b00 an ・・ break ・ Client Error ・ continue die double ・ dO ~ while 文 echO ・ false ( 偽 ) ・ float foreach 文・ for 文 GET バラメータ ・ 75 ・・・ 212 GET メソッド ・ 67 glObaI キーワード・・ GMT ・ HTML (Hyper Text Markup Language) ・ HTML タグ HT 「 P (Hyper Text Transport Protocol) ・ H 幵 P サーバーアプリケーション・ HT 「 P バージョン・・ H ・ TTP プロトコル・・ HTTP リクエスト・ HITP レスポンス・・ include once 文 include 文・ lnformational interger ・・ レ 0 ・ main 関数 ・ 68 M Ⅳ E タイプ・・ 84 mod—ph p ・・・ 175 0 OS ・ PHP POST メソッド・・ rea ・ Redirection require_once 文 require 文 ・・・ 265 ・・ 37 , 264 ・・・ 209 ・・・ 232 9 ( 0 8 9 「 / 4 LO 一 0 1- 「 / -1 ( 0 ( 0 ( 0 っ f) ( 0 ・ 69 ・・・ 222 ・ 83 ・・ 173 ・・・ 188 ・・・ 185 ・ 84 ・・・ 174 8 つ」 C) ( 0 ュ・ ( 0 ・ 70 ・ 68 ・ 20 , 31 ・・ 37 , 264 ・ 83 ・ 84 ・・・ 179 ・・・ 177 ・ 84 ・・ 188 ・・・ 185
2-2 Web アプリケーションの基礎 リソース メソッド HTTP バージョン 図② -3 リクエスト行 リクエストメッセージの 1 行目にはかならすリクエスト行があります。 ・ POST メソッド ・ GET メソッド ・ HTTP バージョン ・メソッド ・リクエスト行 KEYWORD 指定されたリソースを削除する 指定されたリソースを置き換える 指定されたリソースを取得する 表② -1 HTTP 1.1 で定義されているメソッド 通信では、基本的に GET メソッドか POST メソッドだけが用いられています。 表② -1 のようなメソッドが規定されています。ただし、一般的な HTTP による する「リソース」に対して「何を行うか」を指定します。 HTTP 1.1 の規格上では というのは HTTP サーバーに対する「命令」のようなものです。メソッドは後続 「メソッド」の部分には、 GET や POST といった文字が使われます。メソッド す。 このリクエスト行はメソッドとリソース、 HI 丁 P バージョンで構成されていま メソッド G ET POST HEAD PUT DELETE OPTIONS TRAC E LINK UN 凵 NK 意味 指定されたリソースのヘッダ情報を取得する 指定されたリソースに対して、データを送信する 既存のリンク関係を削除する 既存リソースとほかの既存リソースをリンク関係を設定する サーバーが受け取った情報を返却する 利用可能なメソッドなどサーバーのオプション情報を取得する リソースの部分には、 GET や POST の対象となるファイル名などが指定でき ます。リソースにはおもに web サーバー上のファイル名などを指定します。サ ンプル中に「 /index. php 」と記述した場合は、 Web サーバーが管理している「 / 」 ディレクトリ中にある「 index. php 」ファイルを指定していることになります。 H 幵 p バージョンの部分は、おもに HTTP/ 1.1 や日 TT / 1. O と記述されま す。「 HTTP/ 1.1 」とすることで、 HTTP のバージョン 1.1 で規定された形式に従っ てリクエストしていることが分かるようになっています。古くからある HTTP サーバーなどには「 HTTP/ 1.0 」と指定して通信する場合もあります。
・ 36 KEYWORD ・リソース 注② -4 第 2 章 PHP と Web アプリケー ション ここでいうリソースとは、 HTTP サーバーが管理している HTML ファイルやサーバーサイドプログ ラムのことになります。 Accept-Encoding: gzip, deflate Accept-Charset: ÜTF- 8 ′ * Reep-A1ive : 300 Connection: keep-alive Content-Type: application/x-www-form-urlencoded HTTP/I.x 200 OK リスト② -2 HTTP レスポンスの例 ( リスト② -2 ) 。 a = 123 & b = 456 Content-Length: 10 これに対して、 HTTP サーバーからは以下のようなメッセージが戻ります は紙面の都合で折り返していることを表わしています。 Connection: keep-alive Reep-A1ive : timeout=5 ′ max=99 Expires: Thu, 12 NOV 1981 08 : 52 : 00 GMT Last-Modified: Sun, 19 Oct 2008 P 日 P / 5.2.6 server: Apache/2.2.9 (Unix) mod 881 / 2.2.9 0 enSS も / 0.9.71 DAV/2 Date: Sun, 12 Oc ヒ 2008 15 : 13 : 36 15 : 13 : 3 6 GMT GMT 一見すると意味がほとんど分からないと思いますが、これからリクエストメッ は紙面の都合で折り返していることを表わしています。 </html> く /bodY> く > He110 wo て ld く / p > く b0dY> く /he ad> く title>test page</title> <head> く h セ m1 > Content-Length: 10292 Content-Encoding: gzip Content-Type: text/html; charset=utf-8 セージとレスポンスメッセージのおおまかな意味について解説していくことに 行うメッセージです ( 注② -4 ) 。 HTTP リクエスト します。 HTTP リクエストメッセージは、 HTTP サーバーに対してリソースの要求を
第 2 章 PH P と Web アプリケーション 2-2 学習のポイント KEYWORD ・ HTTP プロトコル Web アプリケーションの基礎 ・多くの PHP プログラムは WWW (World Wide Web) の仕組みを利用する ・ WWW の技術のうちでも、 H 幵 P はとくに PHP との関わりが深い ・ HTTP プロトコルは「リクエスト」と「レスポンス」から成り立つメッセージを やりとりすることで、通信する ・リクエストとレスポンスはそれそれ、「リクエスト行 / レスポンス行」「ヘッダ」 と「ボディ」からなる文字情報で構成される ・ボディ情報を表示するための識別子としてヘッダ情報が利用されてる PHP と WWW HTTP の仕組み KEYWORD H 育 P ・・・ WWW での通信を行う際に用いられるプロトコル ( 通信のための規約 ) HTTP リクエスト・・・ H 幵 P における情報の要求メッセージ HTTP レスポンス・・・ H 幵 P リクエストに対する返信 ボディ情報・・・リクエストやレスポンスの通信内容 ヘッダ情報・・・ボディに関連した各種の情報 PHP と WWW の仕組み PHP でプログラミングを行う前に、まずは WWW (World Wide Web) の仕組 みをもうすこし整理しておきましよう。 PHP が Web アプリケーションとして動作するためには、いくつかの周辺技術 が必要です。ここでは PHP 周辺の技術の中で特に大切な H 幵 P プロトコルを中 心に説明します。 HTTP プロトコルは、 PHP のプログラミングをするうえで外す ことのできない重要な技術のひとつですので、ぜひ理解して先に進んでくださ