/

如何在 PHP 中使用 Cookies

如何在 PHP 中使用 Cookies

Cookies 是瀏覽器的一項功能。

當我們向瀏覽器發送一個響應時,我們可以設置一個 cookie,並且該 cookie 會通過瀏覽器在客戶端保存。

然後,瀏覽器發送的每個請求都會將 cookie 返回給我們。

我們可以使用 cookie 來做很多事情,它們主要用於在不需要登錄服務的情況下創建個性化體驗。

需要注意的是,cookie 是特定於域名的,所以我們只能讀取我們設置在應用程序當前域名上的 cookie,不能讀取其他應用程序的 cookie。

但是 JavaScript 可以讀取 cookie(除非它們是HttpOnly cookies,但這樣我們就要進入一個兔子洞了),所以 cookie 不應該存儲任何敏感信息。

我們可以使用 PHP 通過引用 $\_COOKIE 超全局變量來讀取 cookie 的值:

1
2
3
if (isset($\_COOKIE['name'])) {
$name = $\_COOKIE['name'];
}

setcookie() 函數允許您設置一個 cookie:

1
setcookie('name', 'Flavio');

我們可以添加第三個參數來指定 cookie 的過期時間。如果省略,則 cookie 在會話結束時(或瀏覽器關閉時)過期。

使用以下代碼使 cookie 在 7 天後過期:

1
setcookie('name', 'Flavio', time() + 3600 \* 24 \* 7);

我們在 cookie 中只能存儲有限的數據量,而且用戶在清除瀏覽器數據時可以在客戶端清除 cookie。

同時,cookie 是特定於瀏覽器/設備的,所以我們可以在用戶的瀏覽器中設置一個 cookie,但如果他們更換了瀏覽器或設備,該 cookie 將不可用。

讓我們通過之前使用的表單進行一個簡單的示例。我們將輸入的名稱存儲為 cookie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (isset($\_POST['name'])) {
setcookie('name', $\_POST['name']);
}
if (isset($\_POST['name'])) {
echo '<p>Hello ' . $\_POST['name'];
} else {
if (isset($\_COOKIE['name'])) {
echo '<p>Hello ' . $\_COOKIE['name'];
}
}
?>

<form method="POST">
<input type="text" name="name" />
<input type="submit" />
</form>

我添加了一些條件語句來處理已經設置的 cookie 的情況,以及在提交表單後立即顯示名稱的情況,當 cookie 還沒有設置時(它只會設置在下一個 HTTP 請求中)。

如果您打開瀏覽器的開發者工具,您應該在存儲選項卡中看到 cookie。

從那裡,您可以檢查其值,並在需要時刪除它。

tags: [“PHP”, “Cookies”]