Cookie是儲存在客戶端電腦上的文字文件,它們保留用於追蹤目的。 PHP透明地支援HTTP cookie。
辨識迴歸使用者涉及三個步驟
● 伺服器腳本將一組cookie傳送到瀏覽器。例如年齡等。
● 瀏覽器將此資訊儲存在本機電腦上以供日後使用
● 當下次瀏覽器向網路伺服器發送任何請求時,它會將這些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。此函數最多需要六個參數,應在標記之前呼叫。對於設定每一個cookie,必須單獨呼叫此函數。
setcookie(name, value, expire, path, domain, security);
這是所有參數的細節
● name - 設定cookie的名稱。
● value - 設定命名變數的值,並且是您實際要儲存的內容。
● expire - 這指定自1970年1月1日格林尼治標準時間00:00:00以來的未來時間(以秒為單位)。在此之後,cookie將無法存取。如果未設定此參數,則在網頁瀏覽器關閉時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?的詳細內容。更多資訊請關注PHP中文網其他相關文章!