setcookie
(PHP3 , PHP4)
setcookie --- 送出cookie
語法 : int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
說明 :
setcookie( )定義一個cookie和標頭一起送出。cookie必須在任何其它的標頭送出之前送出,這是cookie的限制,而不是PHP。你必須在任何<html>或是<head>標籤之前呼叫此函式。
除了參數name之外,其它都是非必需的。如果只有name這一個參數,則用戶端(client)此名稱的cookie將會被刪除,你也可以使用空字串(" ")來略過此參數,參數expire和secure是個整數,你可以使用0來略過參數,而不是使用空字串。參數expire是一個正規的Unix時間整數,由time( )和mktime( )傳回。參數secure指出此cookie將只有在安全的HTTPS連結時傳送。
常見的錯誤 :
cookies將不變成可看見的,直到下次頁面載入時,此cookies才將成為可看見的。
cookies必須以它們所設定的相同參數值,才能將它刪除。
在PHP3中,在相同的程式裡多次的呼叫setcookie( ),將會以顛倒的順序來執行。如果你想在插入另一個值之前刪除cookie,你應該先執行插入之後再執行刪除。在PHP4中,多次的呼叫setcookie( )會依照呼叫的順序來執行。
下面的範例說明如何去送出cookies :
Example :
<?php
setcookie ("TestCookie", "Test Value");
setcookie ("TestCookie", $value,time()+3600); /* expire in 1 hour */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
?>
下面的範例說明如何將上面範例所送出的cookies刪除 :
<?php
setcookie ("TestCookie");
setcookie ("TestCookie", "", time());
setcookie ("TestCookie", "", time(), "/~rasmus/", ".utoronto.ca", 1);
?>
當你送出cookie時,cookie一部份的值將會自動地urlencoded,並且當接收到此cookie時,它會自動地decoded並分配它,使它成為變數,變數的名稱則與cookie的名稱相同。我們可以簡單的使用下列範例的其中一個方法,來看見cookie的內容 :
<?php
echo $TestCookie;
echo $HTTP_COOKIE_VARS["TestCookie"];
?>
你也可以在cookie的名稱中使用陣列的標記法,來設定陣列cookies,這種設定的結果就像是你有著許多的cookie,但是當你的程式接收到cookie時,cookie的值全部都會放在陣列之中 :
<?php
setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo "$name == $value<br>\n";
}
}
?>