setcookie() 函數會傳送一個HTTP cookie給客戶端。
cookie 是由伺服器傳送到瀏覽器的變數。 Cookie 通常是伺服器嵌入到使用者電腦中的小文字檔案。每當同一台電腦透過瀏覽器請求頁面時,就會傳送這個cookie。
cookie 的名稱會自動指定為相同名稱的變數。例如,如果被傳送的cookie 名為"user",則會自動建立一個名為$user 的變量,包含cookie 的值。
必須在任何其他輸出發送到客戶端前對cookie 進行賦值。
如果成功,則函數傳回TRUE。如果失敗則回傳FALSE。
setcookie(name,value,expire,path,domain,secure)
參數 | 描述 |
---|---|
name | 必需。規定cookie 的名稱。 |
value | 必需。規定cookie 的值。 |
expire | 可選。規定cookie 的過期時間。 time()+3600*24*30 將設定cookie 的過期時間為30 天。如果這個參數沒有設置,那麼cookie 會在session 結束後(即瀏覽器關閉時)自動失效。 |
path | 可選。規定cookie 的伺服器路徑。 如果路徑設定為"/",那麼cookie 將在整個網域內有效.如果路徑設定為"/test/",那麼cookie 將在test 目錄下及其所有子目錄下有效。預設的路徑值是cookie 所處的目前目錄。 |
domain | 可選。規定cookie 的網域名稱。 為了讓cookie 在example.com 的所有子網域中有效,您需要將cookie 的網域設定為".example.com"。當您把cookie 的網域設定為www.example.com 時,cookie 僅在www 子網域中有效。 |
secure | 可選。規定是否需要在安全的HTTPS 連線來傳輸cookie。如果cookie 需要在安全的HTTPS 連線下傳輸,則設定為TRUE。預設是FALSE。 |
提示:可以透過$HTTP_COOKIE_VARS["用戶"] 或$_COOKIE["用戶"] 來存取名為"user" 的cookie 的值。
註:在傳送cookie 時,cookie 的值會自動進行URL 編碼。接收時會自動進行URL 解碼。如果您不需要這樣,可以使用setrawcookie() 來代替。
設定並發送cookie:
<?php$value = "my cookie value";// send a simple cookiesetcookie("TestCookie",$value);?><html><body>......
<?php$value = "my cookie value";// send a cookie that expires in 24 hourssetcookie("TestCookie",$value, time()+3600*24);?><html><body>... ……
檢索cookie 值的不同方法(在cookie 設定之後):
<html><body><?php// Print individual cookiesecho $_COOKIE["TestCookie"];echo "<br />";echo $HTTP_COOKIE_VARS["TestCookie"];echo "<br />";// Print all cookiesprint_r($_COOKIE);?></body></html>
上面的程式碼將輸出:
my cookie valuemy cookie valueArray ([TestCookie] => my cookie value)
將失效日期設定為過去的日期/時間,刪除一個cookie:
<?php// Set the expiration date to one hour agosetcookie ("TestCookie", "", time() - 3600);?><html><body>......
建立一個數組cookie:
<?phpsetcookie("cookie[three]","cookiethree");setcookie("cookie[two]","cookietwo");setcookie("cookie[one]","cookieone");// print cookies (after reloading page)if (isset($_COOKIE["cookie"])) { foreach ($_COOKIE["cookie"] as $name => $value) { echo "$name : $value <br />"; } }?><html><body>......
上面的程式碼將輸出:
three : cookiethreetwo : cookietwoone : cookieone