還暦から始める動的Webサイト構築:PHPを学習(1)
June 11, 2008 – 9:47 pm動的Webサイト構築の学習を、まず、PHPプログラムの基本的な事項を学ぶところから始めることにした。PHPの第一回目として、まず、PHPとは何か?そして、Webアプリケーションはどのように動作するのか?を確認するところから始める。引き続き、非常に簡単なWebアプリケーションを作り、具体的にphpがどのようにHTMLに組み込まれて行くかを見ることにする。
PHPとは: PHP(正式名称 PHP: Hypertext Preprocessor)は、オープンソースの汎用スクリプト言語で、特に、サーバサイドで動作するWebアプリケーションの開発に適すものという。言語構造は簡単で理解しやすく、C言語の基本構文に多くを拠るという。当方、少しばかりは、C言語をかじったことがある。これまでの経験、多少は役にたつのかもしれない。PHPでは、手続き型のプログラミングに加え、(完全ではないが)オブジェクト指向のプログラミングも行われるらしい。オブジェクト指向と聞いただけで、不安を覚える。が、とにかく進もう。
(参考: 日本PHPユーザー会: http://www.php.gr.jp/)
Webアプリケーションの基本的な動作メカニズム: PHPの話に進む前に、Webアプリケーションの基本的な動作について確認する。すべてのWebアプリケーションは、クライアントからの要求に基づいてサーバー内で動的にHTMLデータを生成し、これをクライアントブラウザに返す、という仕組みで動作するということのようだ。具体的に、その動作手順は次の5段階で行われる;
・ Webサーバー上に、あらかじめアプリケーションプログラムを配置。
・ WebブラウザからWebサーバーに対して、処理要求を発行。
・ Webサーバーはアプリケーションプログラムを動作させ、返信するHTMLデータを動的に生成。
・ 生成されたHTMLデータをクライアントに返信。
・ Webブラウザは、返信されたHTMLデータを基に画面を表示。
(参考:Webアプリケーション構築技法(日経BPソフトプレス)
最も簡単なPHPによるWebアプリケーションの作成: PHPを利用する際、サーバー側のプログラムファイルは拡張子.phpを持つテキストファイルとして開発される。最も簡単なPHPプログラム(スクリプト)test.phpを用いて、具体的にどのようにPHPを活用したアプリケーションプログラムが作成されるか見てみよう。
まず、test.phpなるファイルを作成し、以下のテキストを書き込む
<html> <head> <title>PHP Test</title> </head> <body> <?php echo ‘<p>Hello World</p>’; ?> </body> </html>
次に、このファイルをWebサーバのドキュメントルートに配置する。
PHPの最大の特徴は、HTMLデータ中に、他のHTMLタグと同じ形式でPHPに特有な記述「PHPタグ」を埋め込むことができることのようだ。上記の例で、「PHPタグ」は、<?php echo ‘<p>Hello World</p>’: ?> の部分である。「PHPタグ」は、ここで見られるように、<?php で始まり、?> で抜ける。この<?php と?>の間に、PHP言語で書かれた手続きを置くということになる。これは、セミコロン ; により終了する。
Webブラウザ側からWebサーバに対して上記のtest.phpの処理要求が発行すると、Webサーバーは、このプログラムを動作させ(具体的には コマンド echo で、これに引き続く文字列が出力され)、以下のようなHTMLデータを動的に生成される:
<html> <head> <title>PHP Test</title> </head> <body> <p>Hello World</p> </body> </html>
ここで生成されたHTMLデータは、Webブラウザに返信され、このHTMLデータを基に画面が表示されることになる。
Phpinfo()によるシステム情報の取得: PHPには、さまざまな関数が準備されている。そのうち、関数 phpinfo()により、PHPからシステムに関する情報を取得する。この関数を動作させる場合、銃器したhello.phpの <?php echo ‘<p>Hello World</p>’: ?> の部分に代えて、<?php phpinfo(); ?> とすれば良い。
この関数の実行により、サーバー上のPHPにかかわる様々な情報を取得することができる。取得される情報には、サーバー上で動作するApache、PHP、MySqlなどのバージョン情報、設定情報などが含まれる。
定義済みの変数の使用(ブラウザの種類の確認): PHPには定義済みの変数が何種類か用意されており、すべてのスクリプトで使用することができる。外部から来る変数や組み込みの環境変数、直近のエラーメッセージや最後に取得したヘッダなどのあらゆる内容を取得することができる。こうした情報は、定義済み変数にセットされ、これを読み出すことにより、容易に確認することができる。定義済みの変数は、$_変数名[配列]という形式をとる。
参考:
http://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
これら定義済み変数のうち、$_SERVER[‘HTTP_USER_AGENT’]には、ブラウザがHTTPリクエストの一部としてサーバー側に送信したuser agent文字列が格納されており、これを出力すると、クライアントユーザーが使用しているブラウザの種類を特定することができる。
これを行うには、<?php echo $_SERVER[‘HTTP_USER_AGENT’]; ?> を、上記したphpinfo()の部分に代え、実行する。これにより、クライアント側のブラウザ上には下記のような文字列が表示される。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
定義済み変数の使用と文字列の扱い: 定義済み変数の使用を少し進めてみよう。定義済み変数を用いてサーバーソフトウェア名を、2種類の文字列の取り扱い方法を用いて示してみる。Test.phpファイルを次のようにし、実行(クライアント側から処理要求を発行)する。
<html> <head> <title>PHP Test</title> </head> <body> <p> SERVER_SOFTWARE: <?php echo $_SERVER['SERVER_SOFTWARE']; ?> </p> <p> <?php echo 'Server software is ' . $_SERVER['SERVER_SOFTWARE']; ?> </p> </body> </html>
結果、クライアント側のブラウザ上には、次のように出力される:
SERVER_SOFTWARE: Apache Server software is Apache
この例の二つ目には、echo関数で複数の文字列を結合するために、.(ピリオド)を用いていることに注意。