自己做個獨一無二的圖形計數器

<?php
  $FileName = "Count.txt";
  if (file_exists($FileName)) {
    $fp = fopen($FileName, "r+");
    $Count = fread($fp, filesize($FileName));
    if ($Count<=0)
      $Count = 1;
    else
      $Count++;
    rewind($fp);
  } else {
    $fp = fopen($FileName, "w");
    $Count = 1;
  }
  fwrite($fp, $Count);
  fclose($fp);
  
  // 第一種方式
  $CountStr = "" + $Count;
  $NumPic = "";
  while (strlen($CountStr)>0) {
    $NumStr = substr($CountStr, strlen($CountStr)-1, 1);
    $CountStr = substr($CountStr, 0, strlen($CountStr)-1);
    $NumPic = "<img src='". $NumStr .".jpg'>". $NumPic;
  }
  echo "目前瀏覽人次 $NumPic 次<br>";

  // 第二種方式
  $NumPic = "";
  while ($Count>0) {
    $Num = $Count - floor($Count/10)*10;
    $Count = floor($Count/10);
    $NumPic = "<img src='". $Num .".jpg'>". $NumPic;
  }
  echo "目前瀏覽人次 $NumPic 次";
?>
函式:
  1. 部份檔案函式請參見前一範例「留言板」範例說明。
  2. strlen(字串)
    計算字串的長度。
  3. substr(字串, 起算位數, 取幾個)
    截取字串,從起算位數開始取,一共取幾個,字串的第一位數是以0開始,第二位數則是1。
  4. floor(數字)
    無條件捨去整數的小數位,只取整數。
結果:
  1. 目前瀏覽人次 1
  2. 目前瀏覽人次 1
說明:
  1. 準備10個圖形,分別從0.jpg∼9.jpg,例如0123456789;如果你是準備.gif,別忘了把程式碼由.jpg改成.gif。
  2. 讀出舊人數,累加後並存回檔案(可參照前一範例說明)。
  3. 第一種方式:將上站人數先轉成字串後,逐一取最後一個字元,再顯示對應的圖形後,再將字串縮短截取,直到字串完全截取完為止。
  4. 第二種方式:直接取得上站人數,利用除以10求餘數的方式逐一取得個位數,再顯示對應的圖形後,然後將人數除以10,直到人數等於零為止。
  5. 先轉成字串再顯示圖形,主要是避免人數數值過長而產生的溢位錯誤。將Count.txt內容改成123456789123後,再比較兩種方式的結果。
  6. 在自己的網頁上多按幾次「重整」,就可以看到計數器的累加情形。
  7. 計數檔Count.txt及存放計數檔的目錄要設成有write的屬性,例如chmod a+w Count.txtchmod a+w 目錄名
  8. 做屬於自己的計數器雖然挺酷的,但是基本上為了不浪費頻寬,個人還是強烈建議還是使用前一範例的"純文字方式"計數器。

作者:Dana, cowwu@ms15.hinet.net, 2000/12/18
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © 2000 Shu-Chen Wu