PHP 的 Cookie 用法

什麼是 Cookie
Cookie 能夠讓網頁開發者將指定的資料儲存到使用者的硬碟,在有需要時在客戶端讀取已儲存的 cookie 資料。例如在建立電子商貿網站時,可以使用 cookie 記錄使用者所選取的貨品。

而 cookie 為了預防使用者的資料被洩,所以有以下限制:

— 每個瀏覽器最多只可儲存 300 個 cookie
— 每個瀏覽器對每個網站只能儲存 20 個 cookie
— 如果瀏覽器關閉了 cookie 功能,那就不能使用

Cookie 的實作
要在 PHP 內儲存一個 cookie 給使用者,最簡單的做法是:

setcookie(“cookie_name”, “cookie_value”);

以上的 cookie_name 是 cookie 的名稱,cookie_value 是定義給 cookie 的值。
但用這方法所儲存的 cookie,當使用者關閉瀏覽器後便會失效,以下幾個例子會示範 setcookie 其他的用法:


Cookie 的有效時間為 1 小時

設定成只有 /member/ 目錄才可使用

在 www.mydomain.com 的 /member/ 目錄才有效,mydomain.com 則沒有效

如果是結合 HTTPS 安全協定(SSL),就需指定最後一個值

常見問題
一般上使用 cookie 失敗的原因是使用者關閉 cookie 功能,或者在使用 setcookie 前已輸出內容給瀏覽器。

使用者關閉 cookie 功能很難避免,另一個問題則可在程式層面上解決。

在 PHP 內使用 header() 及 setcookie() 的函式時,需要在輸出內容前使用,否則會出現 “Headers already sent” 錯誤, 以下是正確及錯誤的例子:

錯誤寫法, 會出現 “Headers already sent”.

正確寫法


Leave a Reply