Cookie是什麼意思?
Cookie是用來儲存使用者名稱、密碼、訪問該網站的次數等。在訪問某個網站時,Cookie將html網頁發送到瀏覽器中一個小段資訊,以指令碼的形式儲存在用戶端的電腦上。
Cookie有什麼用?如果用伺服器去記錄個使用者上站的次數,那麼長期積累下來資料必然十分龐大,對伺服器來說負擔很中。因此,可以將資料存入到使用者自己的電腦中,等到需要時伺服器再讀取使用者電腦上的Cookie提取資料,這樣一來伺服器就不需要記錄大量的資料。
一般來說,Cookie通過HTTP Headers從伺服器端返回瀏覽器。首先,伺服器端在響應中利用Set Cookie Header來建立一個Cookie。然後瀏覽器在請求中通過Cookie Header包含這個已經建立的Cookie,並且將它返回至伺服器,從而完成瀏覽器的驗證。
Cookie的建立
php建立一個Cookie需要調用setcookie()函數,其結構形式如下:
bool setcookie(string name[,string value[,int expiration[,string path[,bool secure]]]])
參數name表示Cookie的名稱,其它參數可選;
參數value是存入Cookie的值;
參數expiration指定Cookie到期的時間;
參數path指定Cookie在伺服器上的有效路徑,用來設定Cookie將被發送到伺服器的那一個檔案夾下;
參數secure指定Cookie是否通過安全的https連結發送。
php cookie執行個體代碼:
代碼如下 |
複製代碼 |
<?php setcookie("c1","my name is Rose",time()+3600); /* 建立一個名稱為"c1"的cookie 到期時間為3600秒 */ ?> |
cookie的訪問
大多數變數只在記憶體佔用空間,因此當php指令碼終結時變數也從記憶體中被釋放清空。而Cookie可以將變數的值長期儲存到使用者電腦的硬碟,當我們需要調用此變數的值時,讀取該Cookie的名稱即可。
前面一節Cookie的建立已經建立了一個命名為”c1″的Cookie,下面我們來測試一下這個Cookie是否成功建立了。
php 訪問Cookie的執行個體:
代碼如下 |
複製代碼 |
<?php echo "c1的Cookie值是 " .$_COOKIE['c1'] ."<br>"; echo "c2的Cookie值是 " .$_COOKIE['c2']; ?> |
Cookie的時間
如果沒有設定Cookie的有效時間,那麼當關閉瀏覽器時Cookie就會消失。如果要保留Cookie,就必須給它設定一個有效時間。
php Cookie時間設定方法:
time()+秒數
time()表示目前使用者作業系統的時間,後面的秒數即是Cookie的有效時間。如果要制定一個特定的日期,可以使用mktime()函數,其結構形式如下:
mktime(時,分,秒,月,日,年)
如果要立即刪除一個Cookie,可以將時間設定成過去的一個時間即可。
php Cookie時間設定例子:
代碼如下 |
複製代碼 |
setcookie("a","10",time()-60); /* 設定時間為之前60秒,其值立即被刪 */ setcookie("a","10",time()+60); /* 設定有效時間為60秒 */ setcookie("a","10",mktime(0,0,0,11,1,2011)); /* 失效時間為2011年11月1日0點0分0秒 */
|
下面介紹一個利用Cookie設計的一個簡單統計程式:
代碼如下 |
複製代碼 |
<?php $count=$_COOKIE['user']; $count++; setcookie("user",$count,time()+3600); echo "這是你的第 $count 次訪問!"; ?> |
Cookie數組
我們同樣可以建立一個php cookie數組,下面通過執行個體介紹實現方法。
代碼:
代碼如下 |
複製代碼 |
<?php setcookie('name[1]','Rose'); setcookie('name[2]','John'); setcookie('name[3]','Mikle'); if(is_array($_COOKIE['name'])){ /* 判斷是否數組 */ foreach($_COOKIE['name'] as $name=>$value) { echo "$name:$value<br>"; } } else echo "不是數組"; ?> |
Cookie的限制
Cookie是用來儲存使用者瀏覽網站的重要訊息,為了防止亂用導致使用者的資訊泄露,所以對Cookie作出一定的限制:
瀏覽器記錄使用者cookie大小限制在4KB以內的容量;
瀏覽器只儲存某個站台伺服器的Cookie數量限制在20個,如果超出這個數量,則之前儲存的會被刪除。
每個使用者的瀏覽器最多隻能訪問300個Cookie。
使用者可以在瀏覽器設定是否啟用Cookie儲存資訊,因此,要使用Cookie儲存資訊,必須先確認瀏覽器中Cookie的功能是否已經開啟。例如IE9瀏覽器,開啟“屬性”–“隱私”–“進階”選項,選中啟用即可:
提示:瀏覽器建立了一個Cookie之後,對於每個針對該網站的請求都會在Header中帶著這個Cookie。而且瀏覽器會一直發送,知道Cookie到期位置。不過對於其它網站的請求,Cookie是絕對不會跟著發送的。