php圖形數字計數器,是現在網站中經常使用的方法,它的基本功能是針對單個用戶而言,登錄網站後計數器的值加一,用戶刷新網頁,計數器的值不會增加。這一點功能的實現是利用session來實現的,當用戶登錄時,檢測session變量的值,如果該值為空,則在存放登錄人數的文件中讀取現有的訪問量,將該值加一,關閉文件,然後輸出改值;如果session變量的值不為空,則計數器的值不增加,即使在用戶刷新的時候也不增加。
session實現計數有一點不足的地方,就是雖然用戶在該頁面刷新時計數器的值不會增加,但是當用戶關閉浏覽器,再次打開這個網頁時,計數器的值仍會增加,不過這樣也是符合計數的原理的;在這一點和cookie不同的是,利用cookie實現用戶刷新計數器的值不更新,關閉浏覽器打開也是不更新,但是這是在一定的期限內的,當用戶設置的cookie過期之後,計數器的值還是會增加;這樣分析來看,如果要非常精確的計數,有多少人訪問網站就要用IP來實現,而且要存儲在數據庫中,這個相對前兩種來說麻煩一點,但是利用數據庫保存IP可以實現更精確的統計,不單單實現用戶刷新不重復計數,還能實現統計總的訪問量,某個月的訪問量,某天的訪問量,甚至精確到某個IP的訪問量等,在這裡就先介紹利用session實現的圖形數字計數器:
在根目錄下創建:data.txt的文件,用來保存訪問量。
$handle=fopen("data.txt","r");
if(!$handle){
echo "打開文件失敗!";
}else{
echo "您是本站的第:";
$counter = fgets($handle,1024); // 取出文件中的現有的訪問量的值
fclose($handle);
$count = strlen($counter); // 這裡實現的是6為數字的計數,例如002056,在這裡計算出counter的長度,那麼它前面的就是全部輸出0就可以了
for($i=0;$i<6-$count;$i++){
echo "<img src='images/0.png'> "; // 2056前面都輸出 0 的那個小png的圖片
}
}
for($i=0;$i<$count;$i++){
$disgn = substr($counter,$i,1); // 這裡利用substr()函數實現一位一位的數字來比較,第一個參數是string類型的變量,第二個參數是從第幾個開始輸出,第三個變量是 輸出幾個
switch($disgn) { // 各自比較 轉化為圖片的形式
case '0':
$rst[$i]='0.png';
break;
case '1';
$rst[$i]='1.png';
break;
case '2':
$rst[$i]='2.png';
break;
case '3':
$rst[$i]='3.png';
break;
case '4':
$rst[$i]='4.png';
break;
case '5':
$rst[$i]='5.png';
break;
case '6':
$rst[$i]='6.png';
break;
case '7':
$rst[$i]='7.png';
break;
case '8':
$rst[$i]='8.png';
break;
case '9':
$rst[$i]='9.png';
break;
}
echo "<img src='images/".$rst[$i]."'> ";
}
echo "位訪客";
這裡要准備0—9的圖片素材,保存在根目錄下的images文件夾中就可以了,具體的實現效果是: