一、計數
1.基於文件的計數
在這種方式下,用一個文件來存放訪問數,這要求有一個權限至少爲007的目錄,這樣httpd進程才能創建及寫文件,你可以在你自己所擁有的目錄中新建一個子目錄,比如:visit_log,將其權限改爲777。下面就是實現以文件計數的代碼:
<?
if(!file_exists("visit_log/counter.txt")){
$fp=fopen("visit_log/counter.txt","w");
fwrite($fp,"000001"); //這裏假設最大爲6位,你可以根據需要修改
$counter="000001";
fclose($fp);
} //檢查counter.txt文件是否存在,如果不存在則新建一個文件,並且寫入“00001”。
else{
$fp=fopen("visit_log/counter.txt","r");
$counter=fread($fp,6);
//-----------------------------
$counter+=1;
//-----------------------------
fclose($fp);
switch(strlen($counter)){ //將counter變量格式化,這樣顯得美觀
case 1:
$counter="00000".$counter;
break;
case 2:
$counter="0000".$counter;
break;
case 3:
$counter="000".$counter;
break;
case 4:
$counter="00".$counter;
break;
case 5:
$counter="0".$counter;
break;
}
$fp=fopen("visit_log/counter.txt","w");
fwrite($fp,$counter);
fclose($fp);
}
?>
以上代碼就是基於文件計數的,不知道你有沒有發現一個問題,即只要有人訪問該頁,無論他是刷新還是從你的網站的其它頁跳轉到該頁,就會使數值加1,從而使主頁計數失去了真實性。那麼,這又怎麼辦呢?其實,有一個很簡單的辦法,即在返回到首頁的鏈接上加上一個參數visited=1,比如:index.php?visited=1,在計數之前首先檢查visited變量是否已賦值,若未賦值,計數器加1。當然,我們需要修改上面標註“---------------”的代碼:
if(empty($visited)){
$counter+=1;
}
2.基於數據庫的計數
我在這裏選擇的數據庫是MySQL。我們首先要建一個數據庫visit_log,然後在該數據庫中建立一個表visit_counter,爲了實現基本的計數功能,僅需要一個字段即可amount。操作如下:
(1)建立數據庫visit_log
mysqladmin create visit_log –u root –p
正確輸入root的密碼後就可以建立visit_log數據庫了。
(2)建立表visit_counter
mysql visit_log –u root –p
mysql>create table visit_counter (amount int(6));
mysql>insert into visit_counter(amount) values(0);
以下就是實現以數據計數的代碼:
<?
$cn=mysql_connect("localhost","root","******");
mysql_select_db("visit_log",$cn);
$sql="select * from visit_counter";
$result=mysql_query($sql,$cn);
$record=mysql_fetch_array($result);
if(empty($visited)){
$counter=$record["amount"]+1;
$sql="update visit_counter set amount=$counter";
$result=mysql_query($sql,$cn);
}
mysql_close($cn);
switch(strlen($counter)){ //將counter變量格式化
case 1:
$counter="00000".$counter;
break;
case 2:
$counter="0000".$counter;
break;
case 3:
$counter="000".$counter;
break;
case 4:
$counter="00".$counter;
break;
case 5:
$counter="0".$counter;
break;
}?>
以上代碼我就不多說了,都是MySQL的基本操作,實在不會到本站的“參考手冊”下載一些關於MySQL的資料。
以上用兩種方法實現了計數功能,細心的網友可能看出counter變量好像沒有用處。其實它就是我們用來顯示的變量。
二、計數的顯示
1.文本顯示
文本顯示很簡單,只要在想顯示的地方插入以下代碼:
<?echo $counter;?>
當然,你可以增加<font color>改變其色彩等等。文本顯示的一個優點就是加快下載時間,缺點是不夠活潑。
2.圖形顯示
要使圖形顯示,上面的代碼就不能和包含HTML編碼的文件放在一起,這時我們可以另建一個文件叫showcounter.php,其代碼如下:
<?
$cn=mysql_connect("localhost","root","******");
mysql_select_db("visit_log",$cn);
$sql="select * from visit_counter";
$result=mysql_query($sql,$cn);
$record=mysql_fetch_array($result);
if(empty($visited)){
$counter=$record["amount"]+1;
$sql="update visit_counter set amount=$counter";
$result=mysql_query($sql,$cn);
}
mysql_close($cn);
switch(strlen($counter)){ //將counter變量格式化
case 1:
$counter="00000".$counter;
break;
case 2:
$counter="0000".$counter;
break;
case 3:
$counter="000".$counter;
break;
case 4:
$counter="00".$counter;
break;
case 5:
$counter="0".$counter;
break;
}
Header("Content-type: image/gif");
$pic=imagecreate(50,17); //創建圖像
$bkcolor=ImageColorAllocate($pic,0,0,0); //定義背景色
$fcolor=ImageColorAllocate($pic,0,255,0); //定義字體顏色
imageline($pic,0,0,50,17,$bkcolor);
imagestring($pic,3,1,1,$counter,$fcolor);
ImageGif($pic);
ImageDestroy($pic);
?>
接着,在你想使用計數器的地方插入:<img src="showcounter.php" border=0>即可。要注意的是你的PHP中必需安裝GD庫才能創建圖形。
利用數據庫你可以寫出一個功能強大的計數系統。比如,記錄每一天的訪問量、記錄每一用戶的訪問次數等等。