※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
  後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
  また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。

■ 単純なテキスト型アクセスカウンタの作成

まずはPHPで単純なカウンタを作成してみましょう。
考え方は「【CGI(Perl)の解説】」−「15.自作アクセスカウンタ」と同じです。

【 解    説 】

まず、記録するデータは、「累計アクセス数」だけですので「0」という1文字を入力した「acccntf.cgi」という名前のファイルを前もって作成しておきます。

このファイル内のカウンタを取得するには次のように記述します。
$filnam = "acccntf.cgi"; $fp = fopen($filnam,"r"); $totalc = fgets($fp); fclose($fp);

ただし、この「$totalc」に空白や改行がありますと、正常にカウントアップできませんから次のように「trim関数」を使って取り除いておきます。
$totalc = trim($totalc);

累計カウントを「1」カウントアップするにはCGIで言うところのオートインクリメント演算子PHPでは「加算子」と言います。)を使って次のように記述できます。
$totalc++;

そして、これをファイルに書き込むには次のように記述します。
$filnam = "acccntf.cgi"; $fp = fopen($filnam,"w"); fputs($fp,"$totalc"); fclose($fp);

今回、カウンタのファイル名は「acccntf.cgi」としました。
このファイル名は何でもいいのですが、セキュリティの意味で拡張子は「.cgi」にしておくことをお勧めします。

このようにしておくと、訪問者がこのファイルを覗こうとした時、自動的にCGIとして実行しようとしますが、中身がCGIではないのでエラーが発生します。
したがって、覗こうとしてもエラーが発生して覗けなくなるからです。

では、上記の内容を使用して「単純なテキスト型カウンタ」を作成してみます。
なお、今回のサンプルでは排他制御(同時書き込み時の制御)は行っていません。
Windows環境の排他制御については「PHPの予備知識」−「ファイル書き込みの排他制御」をご参照下さい。

【記述サンプル】
print <<< END_DOC <HTML> <HEAD> <title>単純なテキスト型カウンタ</title> </HEAD> <BODY> END_DOC; $filnam = "acccntf.cgi"; $fp = fopen($filnam,"r"); $totalc = trim(fgets($fp)); fclose($fp); $totalc = trim($totalc); $totalc++; $filnam = "acccntf.cgi";$fp = fopen($filnam,"w"); fputs($fp,"$totalc"); fclose($fp); print "累計のカウント:$totalc<br>\n"; print <<< END_DOC </BODY> </HTML> END_DOC; ?>
◆実行結果について

上記のサンプルを「acccnt.php」という名前で保存して実行してみてください。
(注意)
サーバーでテストする場合は、前もってアクセスログを記録するための、何もデータの入っていない「acccntf.cgi」という名前のファイルをパーミッション「666」で必ず作成しておいて下さい。

実行結果はこちらをクリックしてください。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。


page update:2010/01/23 20:32

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom