承上篇 [電腦] 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