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 = tw511.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); 
?>