|
<?php require("http://php.wilson.gs"); // 回首頁 echo "http://php.wilson.gs/bible/5.1.php : 訪客計數器"; |
| 訪客計數器 |
|
訪客計數器是讓 Web 訪客知道該網頁或者網站的人氣指數最直接的方法。尤其是想利用網頁賺錢的人,訪客人數是找廣告商最好的說詞。當然可以將網站來訪人數寫成統計報表,但總是感覺直接看到比較真實,到底眼見為憑。
![]() 在上圖中,訪客計數器的流程如下
PHP 在沒有特殊的訪客計數器函式,但是我們可以用 PHP 的強大功能自已寫一個訪客計數器函式。 以下的函式是訪客計數器的原型,是由 David W. Bettis 所提供,並經過作者少許修改。
在讀取到本頁時,PHP 程式先找尋 /tmp/counter.txt 檔案是否存在,若不存在,則建立一個 counter.txt 檔案,然後將 0 寫入檔案。然後讀取 counter.txt 檔案的內容,也就是純文字檔,再將內文的數字存入 $num 變數中。在 $num 的變數出現在瀏覽器前,還有經過加一的動作,讓使用者可以增加。當然,如果想灌水,就在加一動作時加二或者加三,不過自欺是無用的。最後將訪客人數再回存 /tmp/counter.txt 就一切 OK。 當然,每一頁都要這樣寫,豈不麻煩到了極點。這時,我們可以利用 PHP 提供的 require() 功能,將計數器整理成一個函式,醬子在使用上就方便多多了。 首先要先將 Apache 的設定檔 (httpd.conf) 加入 PHP include 檔案的路徑。例如要設所有的 include 檔都在 http://abcdefghijk.com.tw/include 中,可以在 httpd.conf 加入下面的例子
別忘了重新啟動 Apache 伺服器,新增的 include 路徑才有效。
再來就在伺服器的 .../include 目錄中放入以下的檔案,檔名存成 counter.inc 下面就是 MyCounter() 函式。為了讓讀者方便了解,程式中的變數 $counterFile、$fp 及 $num 保持和 David W. Bettis 所設定的計數器中的變數功能相同。
當然,要用的話要加 Homepage 中嵌入 MyCounter() 函式,就可以使用了
要用這個 MyCounter() 函式,先在 Homepage 的開頭處加入 require() 函式,引入 MyCounter() 函式成為該 Homepage 的一部份。之後再將 <? MyCounter(); ?> 字串放在需要計數器的地方就可以了。
function MyCounter() { 在建立函式時,需要用上面的格式。在自訂函式名稱前加入 function 字串。 每頁有用到 MyCounter() 的 Homepage 都會在 /tmp 之後加入該頁的路徑,這可以用 $PHP_SELF 變數達成。 $counterFile="/tmp".$GLOBALS["PHP_SELF"]; 當然,若您要將 /tmp 改成別的目錄也可以,不然在 SUN 等伺服器,要是 reboot,/tmp 中的東西都沒了,要重新開始再計數了。若您不知要使用什麼目錄,建議使用 /var/log/counter 這個目錄,和其它的 log 等變動資料放在一起。
if (!file_exists($counterFile)) { 這五行主要是檢查 $counterFile 是否存在,若檔案不存在則看目錄是否存在,決定要不要建立目錄。之後就建立檔案,並寫入 0。
$fp = fopen($counterFile,"rw"); 這五行就是打開計數器存放的檔案,並將它累加後的結果送到瀏覽器端。
exec("rm -rf $counterFile"); 最後將計數器檔案刪除,再重新建立一個。就完成了這個以檔案為基礎的純文字計數器。
|
|
mail("wilson@biglobe.net.tw", "Feedback", $message); ?> |