我們在一些留言本、BBS討論區發貼時常會出現這種現象:當進入發貼介面時 在要求填寫使用者名稱和密碼的地方就已經自動地填上了你的資料。這是什麼會事呢?這是因為程式中引入了COOKIE技術的緣故。原來在你第一次登入時,程式就 已在你的電腦中安裝了一個COOKIE資訊包,在你今後登陸時電腦就自動檢索你的COOKIE並取出資訊包的資訊供程式調用,所以出現上面所述的現象。
COOKIE只不過是CGI程式要求瀏覽器持有的一個資訊包,這個資訊包可以由CGI程式在任何時候收回。每當CGI程式要求建立COOKIE 時,COOKIE可以從伺服器傳送到瀏覽器所屬的子目錄下(通常是儲存在C:\WINDOWS\Temporary Internet Files的目錄下,這個過程稱為COOKIE的安裝。
COOKIE的安裝和讀出通常都由一個CGI模組來完成,下面我就將此模組的原代碼公布給大家,有了這個COOKIE模組我們在編寫程式時如要應用COOKIE技術可以說易如反掌。
cookie的文法:
http cookie的發送是通過http頭部來實現的,他早於檔案的傳遞,頭部set-cookie的文法如下:
Set-cookie:name=name;expires=date;path=path;domain=domain;secure name=name: 需要設定cookie的值(name不能使用“;”和","號),有多個name值時用";"分隔例如:name1=name1; name2=name2;name3=name3。
expires=date: cookie的有效期間限,格式: expires="Wdy,DD-Mon-YYYY HH:MM:SS"
path=path: 設定cookie支援的路徑,如果path是一個路徑,則cookie對這個目錄下的所有檔案及子目錄生效,例如:path="/cgi-bin/",如 果path是一個檔案,則cookie指對這個檔案生效,例如:path="/cgi-bin/cookie.cgi"。
domain=domain: 對cookie生效的網域名稱,例如:domain="gzdzw.51.net"
secure: 如果給出此標誌,表示cookie只能通過SSL協議的https伺服器來傳遞。
cookie的接收是通過設定環境變數HTTP_COOKIE來實現的,CGI程式可以通過檢索該變數擷取cookie資訊。