cookie是在服務器端被創建並寫回到客戶端瀏覽器,瀏覽器接到響應頭中關於寫cookie的指令則在本地臨時文件中。
cookie內容的存儲是鍵值對的方式,鍵和值都只能是字符串。
函數原型:setcookie(name, value, expire, path, domain);
注釋:cookie標題頭必須在發送其他標題頭之前發送,否則就無效(這是cookie的限制,而不是PHP的限制)。
cookie的維護:
cookie有四個標識符:cookie的name,domain,path,secure標記。要想在將來改變這個cookie的值,需要發送另一個具有相同cookie name,domain,path的Set-Cookie消息頭,這將以一個新的值來覆蓋原來cookie的值。然而,如果僅僅只是改變這些選項的某一個也會創建一個完全不同的cookie。
cookie失效時間:
可以設置過期時間,如果不設置則是會話級別的,即關閉瀏覽器就會消失。
當cookie創建時包含了失效日期,這個失效日期則關聯了以name-domain-path-secure為標識的cookie。
要改變一個cookie的失效日期,你必須指定同樣的組合。
當改變一個cookie的值時,你不必每次都設置失效日期,因為它不是cookie標識信息的組成部分。
只有手工的改變cookie的失效日期,否則其失效日期不會改變。
這意味着在同一個會話中,一個會話cookie可以變成一個持久化cookie(一個可以在多個會話中存在的),反之則不可。為了要將一個持久化cookie變為一個會話cookie,你必須刪除這個持久化cookie,這只要設置它的失效日期為過去某個時間之后再創建一個同名的會話cookie就可以實現。
****需要記得的是失效日期是以瀏覽器運行的電腦上的系統時間為基准進行核實的。沒有任何辦法來來驗證這個系統時間是否和服務器的時間同步,所以當服務器時間和瀏覽器所處系統時間存在差異時這樣的設置會出現錯誤。****
cookie自動刪除:
會話cooke(Session cookie)在會話結束時(瀏覽器關閉)會被刪除
持久化cookie(Persistent cookie)在到達失效日期時會被刪除