PHP 透明地支援 HTTP cookie。 cookie 是一種在遠端瀏覽器端儲存資料並以此來追蹤和識別使用者的機制。可以用 setcookie() 或 setrawcookie() 函數來設定 cookie。 cookie 是 HTTP 標頭的一部分,因此 setcookie() 函數必須在其它資訊被輸出到瀏覽器前調用,這和對 header() 函數的限制類似。可以使用輸出緩衝函數來延遲腳本的輸出,直到按需要設定好了所有的 cookie 或其它 HTTP 標頭。
Example #1 setcookie()使用範例
<?php $value = 'something from somewhere'; //设置Cookie setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1); //删除Cookie setcookie ("TestCookie", "", time() - 3600); setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1); ?>
如果 variables_order 中包含「C”,則任何從客戶端發送的 cookie 都會自動包含進 $_COOKIE 自動全域數組。如果希望對一個 cookie 變數設定多個值,則需在 cookie 的名稱後面加上 [] 符號。
<?php // set the cookies setcookie("cookie[three]", "cookiethree"); setcookie("cookie[two]", "cookietwo"); setcookie("cookie[one]", "cookieone"); // after the page reloads, print them out if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $name => $value) { $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name : $value <br />\n"; } } ?>
根據 register_globals 的設置,可以從 cookie 建立普通的 PHP 變數。但是不建議依賴此特性,因為出於安全原因此選項通常是關閉的。在早期的 PHP 版本中,當track_vars 設定選項開啟時(此選項自 PHP 4.0.3 後總是開啟的),系統也會設 $HTTP_COOKIE_VARS。
<?php // Print an individual cookie echo $_COOKIE["TestCookie"]; echo $HTTP_COOKIE_VARS["TestCookie"]; // Another way to debug/test is to view all cookies print_r($_COOKIE); ?>