SAK 図書館
PHP 基礎編12 - アクセスカウンタ作成、file_exists、sprintf、filesize、header
■アクセスカウンタ作成 (PHP3、PHP4) ・単純なアクセスカウンタは、次のように作成できる。 ファイルロックする代わりにリードエラーチェックで逃げている。 これでも十分に実用になるだろう。 但し、リロード対策は実施していないので、ぽんぽんカウントするカウンタ ではある。 ・ロケーションは、サイトトップの下に counter フォルダを作成し、 その counter フォルダに counter.php と 0 〜 9.gif の画像ファイルを置 くものとしている。画像は適当に容易すればよい。 ・カウンタファイルの初期リードエラー対策として、 @fopen("$ctfile", 'r') と @ でエラー抑制している。 1 件目で counter.dat ファイルが counter フォルダに作成される。 <?php /* ======================================================================== counter.php アクセスカウンタ ======================================================================== */ // 準備 $ctfile = 'counter.dat'; $imgfld = '.'; $imgtype = 'gif'; // カウンタ参照 $ct = 0; if (($fno = @fopen("$ctfile", 'r'))) { $ct = fgets($fno, 32000); fclose($fno); } // 参照エラーチェック if ($ct == '' || $ct < 1) { if (file_exists("$ctfile")) exit; } // カウンタ加算 if ($col == '1') { if (($fno = fopen("$ctfile", 'w'))) { $ct++; fwrite($fno, "$ct", 32000); fclose($fno); } } // カウンタ桁位置 $num = substr(sprintf("%09d", $ct), 9 - $col, 1); // 画像送信 sndimg($num); // 終了 exit; /* ======================================================================== sndimg 画像送信 ======================================================================== */ function sndimg($num) { global $imgfld, $imgtype; // 画像リード if (!($fno = fopen("$imgfld/$num.$imgtype", 'rb'))) exit; $size = filesize("$imgfld/$num.$imgtype"); $img = fread($fno, $size); fclose($fno); // イメージ表示 header("Content-type: image/$imgtype"); print($img); // リターン return; } ?> ・アクセスカウンタの呼び出しは、次のように HTML に組み込む。 IMG タグで呼び出すのが汎用性があって良いだろう。 最長 9 桁まで指定できる。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>アクセスカウンタテスト</TITLE> </HEAD> <BODY> <P>アクセスカウンタテスト</P> <IMG src="counter/counter.php?col=6" border="0"> <IMG src="counter/counter.php?col=5" border="0"> <IMG src="counter/counter.php?col=4" border="0"> <IMG src="counter/counter.php?col=3" border="0"> <IMG src="counter/counter.php?col=2" border="0"> <IMG src="counter/counter.php?col=1" border="0"> </BODY> </HTML> ■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料