綜述
Cookie是在HTTP協議下,服務器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web服務器保存在用戶浏覽器上的小文件,它可以包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點購物的方式或用戶訪問該站點的次數)。無論何時用戶鏈接到服務器,Web站點都可以訪問Cookie信息。
怎樣設置cookies?
在PHP中可以使用setcookie函數設置一個cookie。cookie是 HTTP標頭的一部分, 因此設置cookie功能必須在任何內容送到浏覽器之前。這種限制與header()函數一樣。任何從客戶端傳來的cookie將自動地轉化成一個PHP變量。PHP取得信息頭並分析, 提取cookie名並變成變量。因此,假如設置cookie如setcookie("mycookie","Cookies")php將自動產生一個名為$mycookie,值為"Cookies"的變量。
我們來看一下setcookie函數語法:
init setcookie(string CookieName,string CookieValue,int CookieExpireTime,path,domain,int secure);
參數說明:
PATH:表示web服務器上的目錄,默認為被調用頁面所在目錄
DOMAIN:cookie可以使用的域名,默認為被調用頁面的域名。這個域名必須包含兩個".",所以假如你指定你的頂級域名,你必須用".mydomain.com"
SECURE:假如設為"1",表示cookie只能被用戶的浏覽器認為是安全的服務器所記住.
cookies使用舉例
假設我們有這樣一個需要注冊的站點,它自動識別用戶的身份並進行相關的操作:假如是已經注冊的用戶,發送給他信息;假如不是已經注冊的用戶,則顯示一個注冊頁面的鏈接。
按照上面的要求,我們先創建數據庫用來保存注冊用戶的信息:名字(first name),姓(last name),Email地址(email address),計數器(visit counter)。
先按下面步驟建表:
mysql> create database users;
Query OK, 1 row affected (0.06 sec)
mysql> use users;
Database changed
mysql> create table info (FirstName varchar(20), LastName varchar(40), email varchar(40), count varchar(3));
Query OK, 0 rows affected (0.05 sec)
然後建一個php頁面對照數據庫檢查cookies。
由於php能轉換可識別的cookie為相應的變量,所以我們能檢查一個名為"myCookies" 的變量:
<? if (isset($myCookies)) { // 假如Cookie已經存在
……
} else { //假如Cookie不存在
……
}
?>
當cookie存在時,我們執行下面步驟:
首先取得cookie值,用explode函數分析成不同的變量,增加計數器,並設一個新cookie:
$info = explode("&", $myCookies);
……
$count ;
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time() 3600); //設置cookie
接著用html語句輸出用戶信息。
最後,用新的計數器值更新數據庫。
假如這個cookie不存在,我們顯示一個注冊頁(register.php)的鏈接。