php setcookie(name, value, expires, path, domain, secure) 參數詳解

來源:互聯網
上載者:User

setcookie() 定義一個和其餘的 HTTP 標題一起發送的 cookie。和其它標題一樣,cookie 必須在指令碼的任何其它輸出之前發送(這是協議限制)。這 需要將本函數的調用放到任何輸出之前,包括 <html> 和 <head> 標籤以及任何空格。如果在調用 setcookie() 之前有任何輸出,本函數將失敗並返回 FALSE。如果 setcookie() 函數成功運行,將返回 TRUE。這並不說明使用者是否接受了 cookie。
函數定義:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
setcookie() 參數詳解

參數        說明 舉例
name cookie的名字 使用 $_COOKIE['cookiename'] 調用名為 cookiename 的 cookie。
value cookie的值,存放在用戶端,不要存放敏感性資料 假定 name 是 'cookiename',可以通過$_COOKIE['cookiename'] 取得其值。
expire

Cookie 到期的時間。這是個 Unix 時間戳記,即從 Unix 紀元開始的秒數。  

換而言之,通常用 time() 函數再加上秒數來設定 cookie 的失效期。

或者用mktime()來實現。

time()+60*60*24*30 將設定 cookie 30 天后失效。

如果未設定,cookie 將會在會話結束後(一般是瀏覽器關閉)失效。

path Cookie 在伺服器端的有效路徑。

如果該參數設為 '/' 的話,cookie 就在整個 domain 內有效,

如果設為 '/foo/',cookie 就只在 domain 下的 /foo/ 目錄及其子目錄內有效,例如 /foo/bar/。

預設值為設定 cookie 的目前的目錄。

domain 該 cookie 有效網域名稱。

要使 cookie 能在如 example.com 網域名稱下的所有子域都有效話,該參數應該設為 '.example.com'。

雖然 . 並不必須的,但加上它會相容更多的瀏覽器。

如果該參數設為www.example.com 的話,就只在 www 子域內有效。

細節見Cookie 規範中的 tail matching。

secure

指明 cookie 是否僅通過安全的 HTTPS 串連傳送。

當設成 TRUE 時,cookie 僅在安全的串連中被設定。預設值為FALSE

0 或 1


例子 1. setcookie() 發送例子

複製代碼 代碼如下:
$value = 'something from somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value,time()+3600); /* expire in 1 hour */
setcookie("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);


注意 cookie 中值的部分在發送的時候會被自動用 urlencode 編碼並在接收到的時候被自動解碼並把值賦給與自己同名的 cookie 變數。如果不想這樣並且在使用 PHP 5 的話,可以用 setrawcookie() 來代替。下面這個簡單的例子可以得到剛才所設定的 cookie 的值:

複製代碼 代碼如下:
<?php
// 輸出單獨的 cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];
// 另一個調試的方法就是輸出所有的 cookie
print_r($_COOKIE);
?>


要刪除 cookie 需要確保它的失效期是在過去,才能觸發瀏覽器的刪除機制。下面的例子說明了如何刪除剛才設定的 cookie:
例子 2. setcookie() 刪除例子

複製代碼 代碼如下:
// 將到期時間設為一小時前
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);


也可以通過在 cookie 名稱中使用數組符號來設定數組 cookie,可以設定多個 cookie 作為數組單元,在指令碼提取 cookie 時所有的值都放在一個數組種:
例子 3. setcookie() 中使用數組的例子

複製代碼 代碼如下:
<?php
// 設定 cookie
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// 重新整理頁面後,顯示出來
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "$name : $value <br />n";
}
}
?>


上例將輸出:
three : cookiethree
two : cookietwo
one : cookieone

總結:cookie的基本使用不難,這篇文章記錄的重點主要是掌握path的路徑設定和domain的網域名稱設定。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.