※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ アクセスカウンタのゼロ埋め(CGI形式)
今までに作ったカウンタの表示はカウンタの数値をそのまま表示させるだけでした。
その都度、桁数が変ったり、そのままでは素っ気ない気もしますよね。
それに前回の「CGI形式」は1文字ずつの画像表示ですからカウンタの桁数が変わるたびHTMLを書き換えないといけないのです。
そこで、今回はそれらのカウンタ値の頭をゼロ埋め(固定表示)しましょう。
と言っても別段変わったことはありません、今までに習った「sprinf()」関数を使い整形すれば、複雑な処理を作る必要もありません。
詳しくは、「PHPの予備知識」−「フォーマット(書式整形)関数(sprintf) 」をご参照下さい。
- 【 解 説 】
-
まず、取得されたカウンタは「$totalc」に入っています。
そこで、例えばゼロ埋めされた6桁の数字にするなら、「sprintf()」を使用し次のように記述するだけです。
$totalc = sprintf("%06d", $totalc);
では、上記の方法でこの前の「グラフィック型のアクセスカウンタ(CGI形式)」を変更してみます。
まずはカウンタを呼び出すためのHTMLページを「gcntc.html」の変更です。
カウンタを6桁固定にするわけですから、次のように変更し、「gcntc6.html」として保存してみましょう。
- 【記述サンプル】
-
<HTML>
<HEAD>
<title>アクセスカウンタのゼロ埋め(CGI形式)</title>
</HEAD>
<BODY>
累計のカウント:
<img src="./gcntc.php?0"><img src="./gcntc.php?1"><img src="./gcntc.php?2"><img src="./gcntc.php?3"><img src="./gcntc.php?4"><img src="./gcntc.php?5"><img src="./gcntc.php?6">
</BODY>
</HTML>
そして、上記の内容を使用して「グラフィック型カウンタ(CGI形式)」を作成します。
この時注意点がひとつあります。
画像データとして出力する場合、下記サンプル3行目のように「print "Content-type:text/html\n\n";」を追記しないと正常に動作しないサーバーがあります。
不要の場合もあります 。
なお、今回のサンプルでは排他制御(同時書き込み時の制御)は行っていません。
Windows環境の排他制御については「PHPの予備知識」−「ファイル書き込みの排他制御」をご参照下さい。
- 【記述サンプル】
- <?php print "Content-type:text/html\n\n"; $ketas = $_SERVER["QUERY_STRING"]; $filnam = "gcntc6f.cgi"; $fp = fopen($filnam,"r"); $totalc = fgets($fp); fclose($fp); if (empty($ketas)){ $totalc = trim($totalc); $totalc++; $filnam = "gcntc6f.cgi"; $fp = fopen($filnam,"w"); fputs($fp,"$totalc"); fclose($fp); $cnt0 = "no"; }else{ $totalc = sprintf("%06d", $totalc); $cnt0 = substr($totalc, $ketas - 1, 1); } $filnam = "$cnt0.gif"; $fp = fopen($filnam,"r"); $imgdat = fread($fp, filesize($filnam)); fclose($fp); print $imgdat; ?>