Yii Cookies


Cookie是存儲在客戶端上的純文本文件。可以使用它們作爲跟蹤的目的。
一般使用三個步驟來識別老用戶 -
  • 服務器發送一組Cookie到客戶端(瀏覽器);例如,ID或令牌
  • 瀏覽器將其存儲
  • 下一次當瀏覽器發送請求到Web服務器時,它也發送那些cookies,以便服務器可以使用該信息來識別用戶。
Cookie通常設置在HTTP標頭,如下面的代碼。
HTTP/1.1 200 OK
Date: Fri, 05 Feb 2015 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name = myname; expires = Monday, 06-Feb-16 22:03:38 GMT;
   path = /; domain = yiibai.com 
Connection: close
Content-Type: text/html
PHP 提供 setcookie()函數來設置 Cookie -
setcookie(name, value, expire, path, domain, security);

在這裏−

  • name − 設置 cookie 的名稱,並存儲在 HTTP_COOKIE_VARS 的環境變量。

  • value − 設置上面命名變量的值。

  • expiry − cookie指定從GMT在1970年1月1日 00:00:00 這段時間後的秒數,超過設置的時間後變量的值將不可訪問。

  • path − 指定 cookie 的有效目錄。

  • domain − 可用於定義域名。所有 Cookie 僅適用於產生它的主機和域名。

  • security −如果設置,這意味着 Cookie 應僅由 HTTPS 發送,否則當設置爲0時,cookies 可以通過常規的HTTP發送。

在 PHP 中訪問 cookie,可以使用 $_COOKIE 或 $HTTP_COOKIE_VARS 變量來實現。
<?php 
   echo $_COOKIE["token"]. "<br />"; 
   /* is equivalent to */ 
   echo $HTTP_COOKIE_VARS["token"]. "<br />"; 
   echo $_COOKIE["id"] . "<br />"; 
   /* is equivalent to */ 
   echo $HTTP_COOKIE_VARS["id"] . "<br />"; 
?>
若要刪除 cookie,應該使用已過期日期設置 cookie ,如下代碼所示:
<?php 
   setcookie( "token", "", time()- 60, "/","", 0); 
   setcookie( "id", "", time()- 60, "/","", 0); 
?>