首頁 >後端開發 >php教程 >PHP如何操作Cookie?

PHP如何操作Cookie?

青灯夜游
青灯夜游轉載
2019-11-29 14:21:232551瀏覽

PHP如何操作Cookie?

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

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中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除