2008-01-22

cookie 路徑問題

在 PHP 中使用 Cookie 是一個簡單又快樂的事
你可以用下面的方法設置一個暫存 1800 秒的 Cookie 變數:
setcookie ("a", "123", time()+1800);

如果你想要一個能暫存七天的 Cookie 變數:
setcookie("a","123",mktime(0,0,0,date("m"),date("d")+7, date("Y")));

然後利用下面的方法去取得 Cookie 變數,這也是既簡單又快樂的事
$_COOKIE['a']

但是要是不瞭解 Cookie 的路徑設定,你可能會發生非常不快樂的問題,造成其他頁面無法取的某路徑下的 Cookie,所以 Cookie 路徑設定這時候就會變的很重要,關於詳細的 Cookie 設定如下
setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

參數說明
(name) Cookie的變數名稱
(value) Cookie名稱的值
(expire) Cookie的留存時間,以「秒」為單位,如果沒有設定,當瀏覽器關掉時,cookie也跟著結束。
(path) 指在哪些目錄下的檔案可以使用Cookie
(Domain) 設定哪些網域可以使用Cookie
(Secure) 安全性-如果結合HTTPS安全傳輸協定(SSL),就是「1」,一般則為「0」。

使用setcookie( )函數時,得先注意下列事項:
  1. 與session_start( )函數的狀況一樣,在使用setcookie( )函數時,之前都不可以有任何的結果輸出。
  2. 如果 php.ini 的「register_globals」設為 on,只要在cookie有效期限用,可以直接使用 $變數輸出變數的內容,但如果設成 off ,則需要用 $_COOKIE["名稱"] 或 $HTTP_COOKIE_VARS["名稱"] 方式取得內容。
  3. 如果沒有設定留存時間,雖然有指定cookie名稱及數值,但因為一設定就過期,結果是無法讀取您寫入的 Cookie。
  4. 如果要刪除cookie的話,直接把要刪除cookie名稱的值設定為空白即可。

參考文章:PHP程式設計講義區

0 回應: