[電腦] PHP 簡易人數計算器 (二)



承上篇 [電腦] PHP 簡易人數計算器 後,增加一個驗證。
如果同一人瀏覽網頁時,人數計不會重複計算,很簡單就是加 Cookies / Session 就可以。

那 Cookies 跟 Session 有什麼分別?

這節暫不詳細解釋,但簡單一點就是:
Cookies 是記錄在用戶的電腦內,當用戶登入後,系統會將 Cookies 儲存到用戶的電腦內,
方便下一次不需要再重新登入。直至用戶自行刪除電腦內的Cookies為止。

Session 是記錄在伺服器內,當用戶登入後,伺服器就會將Session儲存起來,但當用戶登出/關閉瀏覽器後,該Session亦會自動刪除。

基於保安理由,絕不建議用戶名、密碼等敏感資料儲存到Cookies內。否則只會給有心人盜取資料。

以下提供了 Cookies 及 Session 的源碼,大家自行選擇方法了。



前一節提到打開txt檔讀取數值,加上自己的 "1" 再儲存。
本節增加一個驗證。

Cookies 版
<?
if(isset($_COOKIE['count'])){     //這裡叫 COUNT 為COOKIES 名稱

}else{

//更新人數計數值Start 
$fname="count.txt";  //可以更改儲存的位置及檔案名
$fp=fopen($fname,"r");  
$getnum=fgets($fp,1024);  
fclose($fp);  
$getnum=$getnum+1;  
echo "共有".$getnum."人次到訪"; //如無需顯示時,可整行刪除  
$fp=fopen($fname,"w");  fputs($fp,$getnum);  
fclose($fp); 
//更新人數計數值End  

setcookie("count","1",time()+3600); //上面檢查了是否有COOKIES, 如果沒有, 這裡會加一個COOKIES 3600秒  
} 
?>


Session 版
<?
session_start();
if (!session_is_registered("count")) //count 是代號
 { 

//更新人數計數值Start
$fname="count.txt";  //可以更改儲存的位置及檔案名
 $fp=fopen($fname,"r");
 $getnum=fgets($fp,1024);
 fclose($fp);
 $getnum=$getnum+1;
 echo "共有".$getnum."人次到訪"; //如無需顯示時,可整行刪除
 $fp=fopen($fname,"w");
 fputs($fp,$getnum);
 fclose($fp);
//更新人數計數值End

$count_session=rand(1000000,9999999); //一個由1000000 - 9999999 隨機提供的數字
 
 $_SESSION['count'] = "$count_session"; //將上面的數字儲存在伺服器內
 //
  }
?>

Previous
Next Post »