在Web開發中,cookie是一種非常常見的技術。基本上,當你在網站上登錄時,你的瀏覽器中會保存一個cookie文件,這個文件會在以后的訪問中被發送回服務器,服務器就可以用這個文件來識別你的身份。
舉幾個例子,你在社交媒體平臺上登錄時,這個平臺就會在你的瀏覽器中創建一個cookie,保持你登錄狀態。當你關閉瀏覽器再次打開它時,你仍然可以從平臺上看到你的賬戶,而不需要重新登錄。
當你在購物網站上添加商品到購物車時,這個網站也會在你的瀏覽器中創建一個cookie,以便他們保存你的購物車內容。如果你在一段時間內不做任何操作,購物車也會在你下次回到網站時顯示出來。
在PHP中,創建Cookie非常簡單。使用setcookie()函數可以創建一個新cookie。以下代碼展示了創建一個名稱為"username",值為"john"的cookie:
<?php
setcookie("username", "john");
?>
你可以在服務器端任何地方進行創建,不過通常情況下,它會被放在HTML頭部之前,這樣瀏覽器在加載HTML時就能正確創建此cookie。
默認情況下,cookie只在與創建它的域名和路徑匹配的URL中發回。例如,在example.com/中創建的cookie cookie,將不能被send到example.net/。如果您需要將cookie發送給不同的域,可以通過設置cookie的第四個可選參數 -domain。此參數應用于當前域及其所有子域。
以下代碼展示了創建一個cookie,名為"username",值為"john",另一個參數為過期時間到2022年1月1日:
<?php
setcookie("username", "john", strtotime('1/1/2022'));
?>
注意,不同于服務器端會話(session),cookie 在瀏覽器中存儲,因此不應該存儲敏感信息,例如密碼、社保號或信用卡號等:
<?php
setcookie("password", "123456789"); // Never do this!
?>
在使用Cookie時,一定要注意保持安全。任何人都可以通過在自己的瀏覽器上設置Cookie來冒充另一個用戶,因此一定要關注如何使用cookie,尤其是在存儲敏感數據時。
最后提醒一下,為了提高效率,cookie只能存儲非常小的數據。通常推薦將它們用于識別用戶和存儲必要的會話信息。如果需要更多數據的存儲,使用服務器端存儲技術(session)可能是更好的選擇。