PHP - $_COOKIE



PHP 超全域性變數 $_COOKIE 儲存了與 HTTP 請求一起傳遞給當前 PHP 指令碼的變數,這些變數以 Cookie 的形式存在。$HTTP_COOKIE_VARS 也包含相同的資訊,但它不是超全域性變數,現在已被棄用。

什麼是 Cookie?

Cookie 是伺服器在客戶端計算機上儲存的文字檔案,用於跟蹤目的。PHP 透明地支援 HTTP Cookie。Cookie 通常在 HTTP 頭中設定。JavaScript 也可以直接在瀏覽器上設定 Cookie。

伺服器指令碼將一組 Cookie 傳送到瀏覽器。它將這些資訊儲存在本地機器上以備將來使用。下次瀏覽器向 Web 伺服器傳送任何請求時,它會將這些 Cookie 資訊傳送到伺服器,伺服器使用這些資訊來識別使用者。

setcookie() 函式

PHP 提供了 `setcookie` 函式來建立一個 Cookie 物件,以便與 HTTP 響應一起傳送給客戶端。

setcookie(name, value, expire, path, domain, security);

引數

  • 名稱 - 儲存的 Cookie 名稱。

  • - 設定命名變數的值。

  • 過期時間 - 自 1970 年 1 月 1 日 00:00:00 GMT 以來的秒數。

  • 路徑 - Cookie 有效的目錄。

  • 域名 - 在非常大的域名中指定域名。

  • 安全 - HTTPS 為 1。HTTP 預設值為 0。

如何設定 Cookie

看看下面的 `示例`。此指令碼設定名為 `username` 的 Cookie(如果尚未設定)。

示例

<?php
   if (isset($_COOKIE['username'])) {
      echo "<h2>Cookie username already set: " . $_COOKIE['username'] . "</h2>";
   } else {
      setcookie("username", "Mohan Kumar");
      echo "<h2>Cookie username is now set.</h2>";
   }
?>

從 Apache 伺服器的文件根目錄執行此指令碼。您應該看到此訊息作為 `輸出` -

Cookie username is now set

如果重新執行此指令碼,Cookie 現在已經設定。

Cookie username already set: Mohan Kumar

示例

要在客戶端後續訪問時檢索 Cookie -

<?php
   $arr=$_COOKIE;
   foreach ($arr as $key=>$val);
   echo "<h2>$key => $val </h2>";
?>

瀏覽器將顯示以下 `輸出` -

Username => Mohan Kumar

如何刪除 Cookie

要刪除 Cookie,請設定一個已過期的 Cookie 日期,以便瀏覽器觸發 Cookie 刪除機制。

<?php
   setcookie("username", "", time() - 3600);
   echo "<h2>Cookie username is now removed</h2>";
?>

瀏覽器現在將顯示以下 `輸出` -

Cookie username is now removed

使用陣列表示法設定 Cookie

您也可以使用 Cookie 名稱中的陣列表示法來設定陣列 Cookie。

setcookie("user[three]", "Guest");
setcookie("user[two]", "user");
setcookie("user[one]", "admin");

如果 Cookie 名稱包含點 (.),則 PHP 會將它們替換為下劃線 (_)。

廣告