PHP如何使用Cookie

PHP如何使用Cookie?針對這個問題,這篇文章給出了相對應(yīng)的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項目策劃、軟件開發(fā),軟件安全維護、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作,重慶APP開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。創(chuàng)新互聯(lián)深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Cookie是存儲在客戶端計算機上的文本文件,它們保留用于跟蹤目的。PHP透明地支持HTTP cookie。

識別回歸用戶涉及三個步驟

● 服務(wù)器腳本將一組cookie發(fā)送到瀏覽器。例如年齡等。

● 瀏覽器將此信息存儲在本地計算機上以供將來使用

● 當下次瀏覽器向Web服務(wù)器發(fā)送任何請求時,它會將這些cookie信息發(fā)送到服務(wù)器,服務(wù)器使用該信息來識別用戶。

本章將教您如何設(shè)置cookie,如何訪問它們以及如何刪除它們。

Cookie的剖析

Cookie通常設(shè)置在HTTP標頭中(盡管JavaScript也可以直接在瀏覽器上設(shè)置cookie)。設(shè)置cookie的PHP腳本可能會發(fā)送看起來像這樣的標題(瀏覽器F12,network(網(wǎng)絡(luò))可以看到)

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重新發(fā)送到服務(wù)器。瀏覽器的標題可能如下所示

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腳本可以訪問環(huán)境變量$_COOKIE,其中包含所有cookie名稱和值。

用PHP設(shè)置Cookies

PHP提供了setcookie()函數(shù)來設(shè)置cookie。此函數(shù)最多需要六個參數(shù),應(yīng)在<html>標記之前調(diào)用。對于設(shè)置每一個cookie,必須單獨調(diào)用此函數(shù)。

setcookie(name, value, expire, path, domain, security);

這是所有參數(shù)的細節(jié)

● name - 設(shè)置cookie的名稱。

● value - 設(shè)置命名變量的值,并且是您實際要存儲的內(nèi)容。

● expire - 這指定自1970年1月1日格林尼治標準時間00:00:00以來的未來時間(以秒為單位)。在此之后,cookie將無法訪問。如果未設(shè)置此參數(shù),則在Web瀏覽器關(guān)閉時cookie將自動過期。

● path - 指定cookie有效的目錄。單個正斜杠字符允許cookie對所有目錄有效。

● domain - 這可用于在非常大的域中指定域名,并且必須至少包含兩個有效期。所有cookie僅對創(chuàng)建它們的主機和域有效。

● security - 可以設(shè)置為1以指定cookie應(yīng)僅通過使用HTTPS的安全傳輸發(fā)送,否則設(shè)置為0,這意味著cookie可以通過常規(guī)HTTP發(fā)送。

以下示例將創(chuàng)建兩個cookie 名稱和年齡,這些cookie將在一小時后過期。

<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
   
   <head>
      <title>用PHP設(shè)置Cookies</title>
   </head>
   
   <body>
      <?php echo "設(shè)置 Cookies"?>
   </body>
   
</html>

提示:time()函數(shù)返回的是當前的時間戳,也就是1970年1月一日0點0分0秒到腳本執(zhí)行的那一刻的秒數(shù)。

打開瀏覽器訪問腳本,然后按F12打開開發(fā)者模式,選擇Network(網(wǎng)絡(luò))選項卡,選擇Headers,可以看到如下圖所示:

PHP如何使用Cookie

使用PHP訪問Cookie

PHP提供了許多訪問cookie的方法。最簡單的方法是使用$_COOKIE變量。以下示例將訪問上面示例中設(shè)置的所有cookie。

<html>
   
   <head>
      <title>用PHP訪問cookie</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
  
      ?>
      
   </body>
</html>

您可以使用isset()函數(shù)來檢查是否設(shè)置了cookie。如果設(shè)置了再進行輸出。

<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,你應(yīng)該只使用name參數(shù)調(diào)用setcookie()[也就是說想刪除那個name,把他設(shè)置成空],但這并不總是有效,不應(yīng)該依賴。最安全的做法是設(shè)置一個已經(jīng)過期的日期

/ 設(shè)置過去時間為當前時間的之前的60秒 /

<?php
   /* 設(shè)置過去時間為當前時間的之前的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使用Cookie的方法,雖然從篇幅上看很復(fù)雜,但是示例代碼非常詳細且容易理解,如果想了解更多相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。

本文題目:PHP如何使用Cookie
當前路徑:http://muchs.cn/article44/jogjee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、軟件開發(fā)關(guān)鍵詞優(yōu)化、定制開發(fā)、企業(yè)建站用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司