次により実用的なことをしてみましょう。ページを見ているユーザが使用
しているブラウザの種類を確認してみます。これを行なうには、ブラウザが HTTPリクエストの一部として送信したuser
agent文字列を調べます。 この情報は、
変数
に 保存されています。PHPでは、変数名は常にドル記号で始まります。 今、使用する変数は、
$_SERVER["HTTP_USER_AGENT"]
です。
PHPのオートグローバルに関する注意 $_SERVER は、 Webサーバ関連情報を全て保持するPHPの特別な予約変数です。詳細は、 オートグローバル (スーパーグローバルとも呼ばれます) を参照して下さい。 これらの特別な変数は、PHP 4.1.0で導入されました。これ以前は、 $HTTP_SERVER_VARS のような古い配列 $HTTP_*_VARS を代わりに使用していました。古い とはいえ、これらの変数はまだ存在しています。 ( 古いコード に関する注記も 参照して下さい。)
この変数を表示するには、以下のようにします。
PHPで利用可能な変数の
型
には多くの種類があります。上の例では、
配列
の要素を 出力しています。配列は、非常に有用です。
$_SERVER
は、自動的にPHPで利用可能な 変数の一つに過ぎません。マニュアルの
予約変数
のセクションで リストを参照することができます。また、以下のようなファイルを作成する
ことにより、完全なリストを入手することができます。
ブラウザにこのファイルを読み込むと、利用可能な全ての変数のリストとともに
PHPに関する全ての情報を参照することができます。
PHPタグの中に複数のPHP命令を置くことができ、echo文以上のことを行なう
コードブロックを作成することができます。 例えば、インターネット・エクスプローラかどうかを調べたい場合は、
以下のようにします。
ここで、新しい概念をいくつか導入します。
if
文を使用しています。 C言語の基本構文を知っているとしたら、理解できると思います。
C言語や上記の構文を使用する他の言語をあまり知らない場合には、
PHPの入門書を手にとって最初の数章を読むか、このマニュアルの
言語リファレンス
の部分を読むべきです。
http://www.php.net/books.php
でPHP関連の 本のリストを参照することができます。
二番目の新しい概念は、
strstr()
関数のコールです。
strstr()
はPHPに組み込まれた関数で、 文字列の中である文字列を探します。この場合、
$_SERVER["HTTP_USER_AGENT"]
の中で
"MSIE"
を探しています。この文字列が見つかった場合、 この関数は
TRUE
を返し、見つからなかった場合には
FALSE
を返します。 この関数が
TRUE
を返し、
if
文が
TRUE
と評価すると、その{波括弧}の中のコードが実行されます。 そうでない場合は、実行されません。
if
,
else
と
strtoupper()
や
strlen()
のような他の関数で、似たような例を作ってみてください。 関連するマニュアルの各ページにも例がのっています。
この例を少し発展させて、PHPブロックの中からでもPHPモードから出たり
入ったりすることができることを以下に示します。
何かを出力する際にPHPのecho文を使用する代わりに、PHPモードを抜けて、
通常のHTMLを送信しています。ここで注意すべき重要で強力な点は、 スクリプトの論理フローが損なわれないということです。
strstr()
が
TRUE
または
FALSE
のどちらを 返すか、言い換えると
MSIE
が見つかったかどうかに 基づき、HTMLブロックだけが見る側に送信されることになります。