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秒,其值立即被刪 */下面介紹一個利用Cookie設計的一個簡單統計程序:
代碼如下 復制代碼<?php
$count=$_COOKIE['user'];
$count++;
setcookie("user",$count,time()+3600);
echo "這是你的第 $count 次訪問!";
?>
Cookie數組
我們同樣可以創建一個php cookie數組,下面通過實例介紹實現方法。
代碼:
代碼如下 復制代碼 <?php
Cookie的限制
Cookie是用來存儲用戶浏覽網站的重要信息,為了防止亂用導致用戶的信息洩露,所以對Cookie作出一定的限制:
浏覽器記錄用戶cookie大小限制在4KB以內的容量;
浏覽器只保存某個站點服務器的Cookie數量限制在20個,如果超出這個數量,則之前保存的會被刪除。
每個用戶的浏覽器最多只能訪問300個Cookie。
用戶可以在浏覽器設置是否啟用Cookie存儲信息,因此,要使用Cookie存儲信息,必須先確認浏覽器中Cookie的功能是否已經打開。例如IE9浏覽器,打開“屬性”–“隱私”–“高級”選項,選中啟用即可:
提示:浏覽器創建了一個Cookie之後,對於每個針對該網站的請求都會在Header中帶著這個Cookie。而且浏覽器會一直發送,知道Cookie過期位置。不過對於其它網站的請求,Cookie是絕對不會跟著發送的。