Cookie是儲存在用戶端計算機上的文字檔案,它們保留用於跟蹤目的。PHP透明地支援HTTP cookie。
識別回歸使用者涉及三個步驟
● 伺服器指令碼將一組cookie傳送到瀏覽器。例如年齡等。
● 瀏覽器將此資訊儲存在本地計算機上以供將來使用
● 當下次瀏覽器向Web伺服器傳送任何請求時,它會將這些cookie資訊傳送到伺服器,伺服器使用該資訊來識別使用者。
本章將教您如何設定cookie,如何存取它們以及如何刪除它們。
Cookie的剖析
Cookie通常設定在HTTP檔頭中(儘管JavaScript也可以直接在瀏覽器上設定cookie)。設定cookie的PHP指令碼可能會傳送看起來像這樣的標題(瀏覽器F12,network(網路)可以看到)
HTTP/1.1 200 OK Date: Fri, 04 Feb 2000 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=jc2182.com Connection: close Content-Type: text/html
如您所見,Set-Cookie檔頭包含名稱值對,GMT日期,路徑和域。名稱和值將進行URL編碼。expires欄位是瀏覽器在給定時間和日期之後刪除cookie的指令。如果瀏覽器設定為儲存cookie,則會將此資訊保留到有效期。如果使用者將瀏覽器指向與cookie的路徑和域匹配的任何頁面,它會將cookie重新傳送到伺服器。瀏覽器的標題可能如下所示
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
然後,PHP指令碼可以存取環境變數$_COOKIE,其中包含所有cookie名稱和值。
用PHP設定Cookies
PHP提供了setcookie()函數來設定cookie。此函數最多需要六個引數,應在<html>標記之前呼叫。對於設定每一個cookie,必須單獨呼叫此函數。
setcookie(name, value, expire, path, domain, security);
這是所有引數的細節
● name - 設定cookie的名稱。
● value - 設定命名變數的值,並且是您實際要儲存的內容。
● expire - 這指定自1970年1月1日格林尼治標準時間00:00:00以來的未來時間(以秒為單位)。在此之後,cookie將無法存取。如果未設定此引數,則在Web瀏覽器關閉時cookie將自動過期。
● path - 指定cookie有效的目錄。單個正斜槓字元允許cookie對所有目錄有效。
● domain - 這可用於在非常大的域中指定域名,並且必須至少包含兩個有效期。所有cookie僅對建立它們的主機和域有效。
● security - 可以設定為1以指定cookie應僅通過使用HTTPS的安全傳輸傳送,否則設定為0,這意味著cookie可以通過常規HTTP傳送。
以下範例將建立兩個cookie 名稱和年齡,這些cookie將在一小時後過期。
<?php setcookie("name", "John Watkin", time()+3600, "/","", 0); setcookie("age", "36", time()+3600, "/", "", 0); ?> <html> <head> <title>用PHP設定Cookies</title> </head> <body> <?php echo "設定 Cookies"?> </body> </html>
提示:time()函數返回的是當前的時間戳,也就是1970年1月一日0點0分0秒到指令碼執行的那一刻的秒數。
開啟瀏覽器存取指令碼,然後按F12開啟開發者模式,選擇Network(網路)索引標籤,選擇Headers,可以看到如下圖所示:
使用PHP存取Cookie
PHP提供了許多存取cookie的方法。最簡單的方法是使用$_COOKIE變數。以下範例將存取上面範例中設定的所有cookie。
<html> <head> <title>用PHP存取cookie</title> </head> <body> <?php echo $_COOKIE["name"]. "<br />"; echo $_COOKIE["age"] . "<br />"; ?> </body> </html>
您可以使用isset()函數來檢查是否設定了cookie。如果設定了再進行輸出。
<html> <head> <title>用PHP存取cookie</title> </head> <body> <?php if(isset($_COOKIE["name"])) echo $_COOKIE["name"]. "<br />"; if(isset($_COOKIE["age"])) echo $_COOKIE["age"] . "<br />"; ?> </body> </html>
用PHP刪除Cookie
正式地說,要刪除一個cookie,你應該只使用name引數呼叫setcookie()[也就是說想刪除那個name,把他設定成空],但這並不總是有效,不應該依賴。最安全的做法是設定一個已經過期的日期
/ 設定過去時間為當前時間的之前的60秒 /
<?php /* 設定過去時間為當前時間的之前的60秒 */ setcookie( "name", "", time()- 60, "/","", 0); setcookie( "age", "", time()- 60, "/","", 0); ?> <html> <head> <title>用PHP刪除cookie</title> </head> <body> <?php echo "刪除cookie" ?> </body> </html>
推薦學習:PHP教學
以上就是PHP如何操作Cookie?的詳細內容,更多請關注TW511.COM其它相關文章!