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

■ アクセスカウンタのゼロ埋め(SSI形式)

今までに作ったカウンタの表示はカウンタの数値をそのまま表示させるだけでした。
その都度、桁数が変ったり、そのままでは素っ気ない気もしますよね。
そこで、今回はそれらのカウンタ値の頭をゼロ埋めしましょう。

と言っても別段変わったことはありません、今までに習った「sprinf()」関数を使い整形すれば、複雑な処理を作る必要もありません。
詳しくは、「PHPの予備知識」−「フォーマット(書式整形)関数(sprintf) 」をご参照下さい。

【 解    説 】

まず、取得されたカウンタ「$totalc」に入っています。
そこで、例えばゼロ埋めされた6桁の数字にするなら、「sprintf()」を使用し次のように記述するだけです。
$totalc = sprintf("%06d", $totalc);

では、上記の方法でこの前の「グラフィック型のアクセスカウンタ(SSI形式)」を変更してみます。
まずはカウンタを呼び出すためのHTMLページ「gcnts.html」の変更です。
カウンタを6桁固定にするわけですから、次のように変更し、「gcnts6.html」として保存してみましょう。

【記述サンプル】
<HTML> <HEAD> <title>グラフィック型アクセスカウンタ(SSI形式)</title> </HEAD> <BODY> 累計のカウント:<!--#include virtual="./gcnts6.php" --> </BODY> </HTML>

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

【記述サンプル】
<?php $filnam = "gcntsf.cgi"; $fp = fopen($filnam,"r"); $totalc = fgets($fp); fclose($fp); $totalc = trim($totalc); $totalc++; $filnam = "gcntsf.cgi"; $fp = fopen($filnam,"w"); fputs($fp,"$totalc"); fclose($fp); $totalc = sprintf("%06d", $totalc); $strlen0 = strlen($totalc); for($scnt0 = 0;$scnt0 < $strlen0;$scnt0++){   $cnt0 = substr($totalc, $scnt0, 1);   print "<img src='/images/$cnt0.gif'>"; } ?>
◆実行結果について

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

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


page update:2010/01/23 20:32

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