« 88. 什麼是 Cookies? | (回到Blog入口) | 90. 使用 Cookies 有哪些限制? »

89. Cookies 可以做什麼應用?

jollen 發表於 October 27, 2006 10:11 PM

一般在撰寫 CGI 程式時,必須使用 Set-Cookie 檔頭來建立 cookes,不過 PHP 提供了 setcookie() 函數可以幫我們輕鬆完成這項工作。

setcookie 函數的原型:

int setcookie(string name, string value, int expire, string path, string domain, int secure);

由於 setcookie() 函數只是減輕我們撰寫檔頭的工作,所以 setcookie() 函數使用時和 header() 函數一樣,必須在沒有任何輸出之間呼叫,否則會發生錯誤。

如果 PHP 程式是寫 HTML 裡,則 setcookie() 函數必須寫在 <HTML> 標籤之前。請看底下的範例:

<?php setcookie("username", "Jollen", time()+3600); ?> <html> <head> </head> <body> </body>

由於 cookies 也是屬於 HTTP 的檔頭資訊,因此在 setcookie() 前不能有任何的 字串或 PHP 警告訊息輸出。

這個範例表示我們要設定一個名為 username 的 cookie,該 cookie 的到期時間為 time()+3600,也就是 1 小時後。

setcookie 所接受的參數依序解釋如下:

□ name
cookies 的名稱。

□ value
cookies 的值,可以是字串或數字。

□ expire
cookies 的到期時間,例如:

setcookie("username", "Jollen", time()+3600);

表示 username 這個 cookies 的到期時間為 time()+3600,也就是 1 小時後。

□ path
設定 cookies 在伺服器端所屬的路徑。path 指定只有該目錄下的檔案與其子目錄可以讀取該 cookies。

□ domain
設定 cookies 所屬的網域名稱。指定網域名稱時,不用加上主機名稱,例如:

setcookie("TestCookie",$value,time()+3600,"/~jollen/",".jollen.org",1);

要特別注意,雖然沒有加上主機名稱,可是開頭的小數點不能省略。

□ secure
指定 1 表示該 cookie 只有在 HTTPS 協定下才能傳送。

如果只指定 cookies 的名稱給 setcookie(),表示要刪除該 cookies。例如:

if (isset($UserName)) setcookie("UserName");

傳入參數時,如果要略過某些參數,可以傳入空字串,但 expire 與 secure 則必須傳入 0。例如:

setcookie("user", "Hellen", 0, "", "", 1);

如果我們省略 path 或 domain 參數,setcookie() 會自動我們指定網頁所在的目錄與主機的網域名稱。secure 預設是不使用 HTTPS 傳送。瀏覽器則是根據 path 與 domain 來判斷要送出 cookies 給誰。

--jollen

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org