PHP如何操作Cookie?

2020-07-16 10:05:51

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,可以看到如下圖所示:

1.png

使用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其它相關文章!