グラフィック版アクセスカウンタ

グラフィック版アクセスカウンタを作ってみましょう。

あなたは 3770人目のお客様です。

作り方は次のようにします。

あらかじめ0〜9までの数字を描き,ファイル名 0.jpg9.jpg で保存しておきます(もちろんJPEGでなくてもGIFでもPNGでもかまいません)。 できるだけ小さく作るのがコツです。 このページの例は2001年の授業で即興で作ったものですので,いいかげんなデザインです。

カウントする部分はテキスト版と同じですが,最後に $c の値を千の位 $c3,百の位 $c2,十の位 $c1,一の位 $c0 に分解しています。 % 10 は「10で割ったあまり」です。

<?php
  $f = fopen("count.txt", "r+");
  $c = fgets($f, 10);
  $c = $c + 1;
  fseek($f, 0);
  fputs($f, $c);
  fclose($f);
  $c3 = ($c / 1000) % 10;
  $c2 = ($c /  100) % 10;
  $c1 = ($c /   10) % 10;
  $c0 =  $c         % 10;
?>

表示の部分は次のようになります。

<p>
あなたは
<?php
  echo "<img src=\"$c3.jpg\" alt=\"$c3\">";
  echo "<img src=\"$c2.jpg\" alt=\"$c2\">";
  echo "<img src=\"$c1.jpg\" alt=\"$c1\">";
  echo "<img src=\"$c0.jpg\" alt=\"$c0\">";
?>
人目のお客様です。
</p>

【問】桁数を増やすにはどうすればいいでしょうか?

【問】頭のゼロを消すにはどうすればいいでしょうか?

注意

echo "..."; の中でさらに "..." を使う場合,内側の "..."\"...\" にします。この \ は16進 0x5c の文字(U+005C: REVERSE SOLIDUS)ですが,Windowsのxyzzyを使う際に,Unicode (UTF-8N) で保存するところを間違えて STD Unicode (UTF-8N) で保存するとUTF-8で 0xc2 0xa5 という2バイトの文字(U+00A5: YEN SIGN)になってしまい,エラーになります。


奥村晴彦

Last modified: 2012-04-18 15:50:06