PHP超入門 (40)
さて、前回で、単純なテキストタイプのアクセスカウンターをPHPのプログラ
ムで作ってみました。
-----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\count.txt","r+");
$count = fgets($file);
$count = $count + 1;
rewind($file);
flock($file,LOCK_EX);
fwrite($file,$count);
flock($file,LOCK_UN);
print("あなたは".$count."人目のお客様です。");
?>
-----------------------------------------------------------
ですが、これで、完成だ〜、ハイ終わり、という訳にもいきません。
なぜなら、このアクセスカウンターをどのように設置して、ホームページの中
で使用するのか?という問題が残っているからです。
とは、いっても、参考書等に載っているCGI(Perl)によるものとは比較にな
らない程簡単ですので、ご心配には及びません。
■PHPはHTML埋め込み型の言語である。
えらい仰々しく書きましたが、このPHPのお話を始める際に、一番最初にお
話した、PHPというプログラミング言語の特徴の大きな特徴です。
すなわち、PHPプログラムはHTML文と混在して書けてしまい、特に問題なく動
作してしまう、という事です。
ですから、CGI(Perl)による、アクセスカウンターのプログラムを見たこと
がある人は、分かると思いますが、特別な手続きを必要としません。
■実例1
では、早速、実例をみてみましょう。
実例1
-----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\count.txt","r+");
$count = fgets($file);
$count = $count + 1;
rewind($file);
flock($file,LOCK_EX);
fwrite($file,$count);
flock($file,LOCK_UN);
?>
<html>
<head>
<title>アクセスカウンターのテスト</title>
</head>
<body>
あなたの好きなHTML文(1)<br>
<br>
<?php print("あなたは".$count."人目のお客様です。"); ?><br>
<br>
あなたの好きなHTML文(2)<br>
</body>
</html>
-----------------------------------------------------------
上のPHP+HTML、分かりますか?
アクセス者があると、まず、HTML文がブラウザに読み込まれる前に、サーバー
側で、PHPプログラムが実行され、「count.txt」にカウントが記録され、その
後、そのカウントの数は、変数「$count」に代入されます。
この過程は、サーバー側で実行されるので、ユーザー側には見えません。
その次にHTML文が読み込まれ、「あなたの好きなHTML文(1)」すなわち、
通常の文章とか図とか写真がブラウザに表示されます。
そして、「」の
部分で、再びPHPプログラムが実行され、最初のPHPプログラムで処理された、
「$count」の値が、あたかもHTML文の一部のように表示されます。
そして、再び、「あなたの好きなHTML文(2)」の部分が、通常のHTML文と
してブラウザに表示されます。
では、実際にその動作を確認してみましょう。
上の「PHP+HTML」を「095-1.php」というファイル名で、「C:\inetpub\wwwroo
t\php」フォルダに保存します。
その際に、
・ファイル拡張子は、「.php」であり、「.html」とか「.htm」ではないこ
とに注意してください。
・アクセス者の数を記録する、「0」とのみ書いた「count.txt」も作成して、
保存することも忘れずに。。。
ということに注意してください。
そうして、準備が整ったら、ブラウザのアドレス欄に「http://localhost/ph
p/095-1.php」と入力してみてください。
PHPプログラムとHTML文が一緒になって表示されることを確認してみてください。
また、このページのソースを確認すると(IEの場合は、表示(V)→ソース(C))、
PHPによるプログラム部分は全く表示されていないことも確認してみてください。
これは、先にもお話した様に、PHPのプログラム部分はサーバー側で処理され、
ブラウザには、PHPの情報は送られてこない為です。
■実例2
PHPのプログラム部分と、HTML文とが混在できる、ということが分かった今、
次のような書き方もアリです。
実例2
-----------------------------------------------------------
<html>
<head>
<title>アクセスカウンターのテスト</title>
</head>
<body>
あなたの好きなHTML文(1)<br>
<br>
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\count.txt","r+");
$count = fgets($file);
$count = $count + 1;
rewind($file);
flock($file,LOCK_EX);
fwrite($file,$count);
flock($file,LOCK_UN);
print("あなたは".$count."人目のお客様です。");
?>
<br>
<br>
あなたの好きなHTML文(2)<br>
</body>
</html>
-----------------------------------------------------------
すなわち、HTML文の中に、PHPプログラムの部分をまとめて書いてしまう方法
です。
これも、実例1と全く同じ動作をします。
ただ、ケース・バイ・ケースになりますが、今回のような短いPHPプログラム
の場合はいいのですが、もっと、大きなプログラムになると、どうしてもこの
ような書き方だと見にくくなってしまうので、私的には、PHPプログラムの部
分は、HTML文が始まる前に書いてしまい、HTML文内では、値が代入された変数
のみを書く、実例1の方が好みです。
まぁ、これは人それぞれの好みで、一概に何とも言えませんが。。。
■実例3
これはチョット変わった例です。
実例3
-----------------------------------------------------------
<?php
$file = fopen("C:\\inetpub\\wwwroot\\php\\count.txt","r+");
$count = fgets($file);
$count = $count + 1;
rewind($file);
flock($file,LOCK_EX);
fwrite($file,$count);
flock($file,LOCK_UN);
?>
<html>
<head>
<title>アクセスカウンターのテスト</title>
</head>
<body>
あなたの好きなHTML文<br>
</body>
</html>
-----------------------------------------------------------
この例の場合、上の2つの例のような、HTML文中に、
<?php print("あなたは".$count."人目のお客様です。"); ?>
がありません。
このため、アクセス者のブラウザには、ホームページの訪問者数が表示されま
せん。
そう、これは、何らかの理由で、あなたがアクセス者にホームページの訪問者
数を知らせずに、自分だけが知りたい場合に使用できます。
アクセス者の数は、「count.txt」にしっかり記録されているので、このファ
イルを見れば、アクセス者の数を、あなただけが知ることができます。
以上、前回まで、お話してきた、アクセスカウンターのPHPプログラムを実際
に、どうホームページ中で使うか、実例を交えて紹介してみました。