用PHP製作自己的計數器

 用PHP來實現計數器很簡單,計數器的實現分爲兩個階段:一是實現計數;二是實現數字的顯示;而在實現計數時又有兩種方式:一是基於文件的計數方式;二是基於數據庫的計數方式。而在實現數字的顯示也有兩種方式:一是普通的文本顯示;二是圖形方式顯示。下面就將這四種情況作一介紹: 

一、計數 
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庫才能創建圖形。 
利用數據庫你可以寫出一個功能強大的計數系統。比如,記錄每一天的訪問量、記錄每一用戶的訪問次數等等。 

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章