摘要:Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護客戶工作站上信息的一種方式。Cookie的使用很普遍,許多提供個人化服務(wù)的網(wǎng)站都是利用Cookie來區(qū)分不同用戶,以顯示與用戶相應(yīng)的內(nèi)容,如web接口的免費E-mail網(wǎng)站,就需要用到Cookie。有效地使用Cookie可以輕松完成很多復(fù)雜任務(wù)。
關(guān)鍵詞:php;瀏覽器;網(wǎng)絡(luò)
中圖分類號:TP393.092 文獻標識碼:A 文章編號:1007-9599 (2012) 21-0000-02
1 了解Cookie
1.1 什么是Cookie
Cookie是一種在遠程瀏覽器端存儲數(shù)據(jù)并以此來跟蹤和識別用戶的機制。簡單的說,Cookie是web服務(wù)器暫時存儲在用戶硬盤上的一個文本文件,并隨后被web瀏覽器讀取。當(dāng)用戶再次訪問web網(wǎng)站時,網(wǎng)站通過讀取Cookies文件記錄這位訪客的特定信息(如上次訪問的位置、花費的時間、用戶名和密碼等),從而迅速作出響應(yīng),如在頁面中不需要輸入用戶的ID和密碼即可直接登錄網(wǎng)站等。
文本文件的命令格式如下:
用戶名@網(wǎng)站地址[數(shù)字].txt。在Cookie文件夾下,每個Cookie文件都是一個簡單而又普通的文本文件,而不是程序。Cookie中的內(nèi)容大多都經(jīng)過了加密處理,因此,表面看來只是一些字母和數(shù)字組合,而只有服務(wù)器的CGI處理程序才知道它們真正的含義。
2.2 Cookie 的功能
Web服務(wù)器可以應(yīng)用Cookie包含信息的任意性來篩選并經(jīng)常性維護這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookie常用于以下3個方面:記錄訪客的某些信息。如可以利用Cookie記錄用戶訪問網(wǎng)頁的次數(shù),或者記錄訪客曾經(jīng)輸入過的信息,另外,某些網(wǎng)站可以使用Cookie自動記錄訪客上次登錄的用戶名。在頁面之間傳遞變量。瀏覽器并不會保存當(dāng)前頁面上的任何變量信息,當(dāng)頁面被關(guān) 閉時頁面上的所有變量信息將隨之消失。如果用戶聲明了一個變量id=8,要把這個變量傳遞到另一個頁面,可以把變量id以Cookie形式保存下來,然后在下一個頁面通過讀取該Cookie來獲取變量的值。將所查看的Internet頁存儲在Cookie臨時文件夾中,可以提高以后瀏覽的速度。
2 Cookie的應(yīng)用
2.1 創(chuàng)建Cookie
在PHP中通過setcookie()函數(shù)創(chuàng)建Cookie。在創(chuàng)建Cookie之前必須了解的是,Cookie是HTTP頭標的組成部分,而頭標必須在頁面其他內(nèi)容之前發(fā)送,它必須最先輸出。若在setcookie()函數(shù)前輸出一個HTTP標記或echo語句,甚至一個空行都會導(dǎo)致程序出錯。
使用setcookie()函數(shù)創(chuàng)建Cookie,示例代碼如下:
<?php
setcookie(\"TMCookie\",'www.mrbccd.com');
setcookie(\"TMCookie\", 'www.mrbccd.com', time()+60); //設(shè)置cookie有效時間為60秒
//設(shè)置有效時間為60秒,有效目錄為“/tm/”,有效域名為“mrbccd.com”及其所有子域名
setcookie(\"TMCookie\", $value, time()+3600, \"/tm/\",\". mrbccd.com\", 1);
?>
運行本實例,在Cookie文件夾下會自動生成一個Cookie文件,名為administrator@1[1].txt,Cookie的有效期為60秒,在Cookie失效后,Cookie文件自動刪除。
2.2 讀取Cookie
在php中可以直接通過超級全局數(shù)組$_cookie[]來讀取瀏覽器端的Cookie值。
使用print_r()函數(shù)讀取Cookie變量,實例代碼如下:
<?PHP
if(!isset($_COOKIE[\"visittime\"])){
setcookie(\"visittime\",date(\"y-m-d H:i:s\"));
echo \"歡迎您第一次訪問網(wǎng)站!\".\"
\";
}else{
setcookie(\"visittime\",date(\"y-m-d H:i:s\"),time()+60);
echo \"您上次訪問網(wǎng)站的時間為:\".$_COOKIE[\"visittime\"];echo \"
\"; }
echo \"您本次訪問網(wǎng)站的時間為: \".date(\"y-m-d H:i:s\");//輸出當(dāng)前的訪問時間
?>
首次運行本實例,由于沒有檢測到cookie文件,運行結(jié)果如圖11.2所示。如果用戶在cookie設(shè)置到期時間(本例為60秒)前刷新或再次訪問該實例,運行結(jié)果如圖11.3所示。
2.3 刪除Cookie
當(dāng)刪除Cookie被創(chuàng)建后,如果沒有設(shè)置它的失效時間,其Cookie文件會在關(guān)閉瀏覽器是自動刪除。如果要在關(guān)閉瀏覽器之前刪除Cookie文件,方法有兩種:一種是使用setcookie()函數(shù)刪除,另一種是在瀏覽器中手動刪除Cookie。
(1)使用setcookie()函數(shù)刪除Cookie。刪除Cookie和創(chuàng)建Cookie的方式基本類似,刪除Cookie也使用setcookie()函數(shù)。刪除Cookie只需要將setcookie()函數(shù)中的第二個參數(shù)設(shè)置為空值,將第三個參數(shù)Cookie的過期時間設(shè)置為小于系統(tǒng)的當(dāng)前時間。例如,將Cookie的過期時間設(shè)置為當(dāng)前時間減1秒,代碼如下:
Setcookie(\"name\",\"\",time()-1);
在下面的代碼中,time()函數(shù)返回以秒表示的當(dāng)前時間戳,把過期時間減1秒就會得到過去的時間,從而刪除Cookie。
把過期時間設(shè)置為0,可以直接刪除Cookie。
(2)在瀏覽器中手動刪除Cookie。在使用Cookie時,Cookie自動生成一個文本文件存儲在IE瀏覽器的Cookies臨時文件夾中。在瀏覽器中刪除Cookie文件是非常便捷的方法。具體操作步驟如下:啟動IE瀏覽器,選擇“工具”-“Internet選項”命令,打開“Internet選項”的對話框,在“常規(guī)”選項卡中單擊“刪除Cookies”按鈕,將彈出的“刪除Cookies”對話框,單擊“確定”按鈕,即可成功刪除全部Cookie文件。
3 Cookie的生命周期
如果Cookie不設(shè)定時間,就表示它的生命周期為瀏覽器會話時間的期間,只要關(guān)閉IE瀏覽器,Cookie就會自動消失。這種Cookie被稱為會話Cookie,一般不保存在硬盤上,而是保存在內(nèi)存中。如果設(shè)置了過期時間,那么瀏覽器會把Cookie保存到硬盤中,再次打開IE瀏覽器是會依然有效,直到它的有效期超時。雖然Cookie可以長期保存在客戶端瀏覽器中,但也不是一成不變的。因為瀏覽器最多允許存儲300個Cookie文件,而且每個Cookie文件支持最大容量為4KB;每個域名最多支持20個Cookie,如果達到限制時,瀏覽器會自動的隨機刪除Cookies。
參考文獻:
[1]騰中偉.信息化設(shè)備為貨檢作業(yè)構(gòu)建立體防護網(wǎng)[J].人民鐵道,2010,06,17.
[2]張磊,周繼鋒,張強.系統(tǒng)軟件可靠性驗證測試方法研究[J].計算機與數(shù)字工程,2010,06.