最近讀了一點《PHP核心技術與最佳實踐》,看了cookie和session,有所收獲,結合之前的認識參考了幾篇博客,總結一下~~
cookie 是一種在遠程浏覽器端儲存數據並以此來跟蹤和識別用戶的機制。
PHP在http協議的頭信息裡發送cookie, 因此 setcookie() 函數必須在其它信息被輸出到浏覽器前調用,這和對 header() 函數的限制類似。
可以用 setcookie() 或 setrawcookie() 函數來設置 cookie。也可以通過向客戶端直接發送http頭來設置。
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )
name: cookie的名稱,即$_COOKIE這個全局數組的鍵值
value: cookie變量的值,參數為空,Cookie的值為空。Cookie不能保存boolean值,應用0表示false,1表示true。
expire: 有效期結束的時間,以秒為單位。
path: 有效目錄,默認為“/”,即整個域名下有效。如果有需要,可以設置僅在某目錄下有效。
domain: 有效域名,頂級域唯一,默認在本域名下。
secure: 是否對Cookie進行加密傳輸,默認為false.如果值為true,則cookie只能在https連接上有效,如果為默認值false,則http和https都可以。
httponly: 是否只使用HTTP訪問Cookie。如果為1或true,客戶端的javascript就無法操作Cookie,使用此參數可以減少XSS攻擊的風險,但不是所有的浏覽器都支持這個參數。此參數只在PHP5.2.0以上的版本有效。
例子:
<? = 'something from somewhere'("TestCookie", ); ("TestCookie", , ()+3600); ("TestCookie", , ()+3600, "/~rasmus/", ".example.com", 1); ?>
設置多個cookie變量: setcookie('var[a]','value');用數組來表示變量,但他的下標不用引號。這樣就可以用$_COOKIE[‘var’][‘a’]來讀取該COOKIE變量。