承上篇 [電腦] 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"; //將上面的數字儲存在伺服器內
//
}
?>
Sign up here with your email
