PHP如何使用Cookie?針對這個(gè)問題,這篇文章給出了相對應(yīng)的分析和解答,希望能幫助更多想解決這個(gè)問題的朋友找到更加簡單易行的辦法。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評(pí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)深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
Cookie是存儲(chǔ)在客戶端計(jì)算機(jī)上的文本文件,它們保留用于跟蹤目的。PHP透明地支持HTTP cookie。
識(shí)別回歸用戶涉及三個(gè)步驟
● 服務(wù)器腳本將一組cookie發(fā)送到瀏覽器。例如年齡等。
● 瀏覽器將此信息存儲(chǔ)在本地計(jì)算機(jī)上以供將來使用
● 當(dāng)下次瀏覽器向Web服務(wù)器發(fā)送任何請求時(shí),它會(huì)將這些cookie信息發(fā)送到服務(wù)器,服務(wù)器使用該信息來識(shí)別用戶。
本章將教您如何設(shè)置cookie,如何訪問它們以及如何刪除它們。
Cookie的剖析
Cookie通常設(shè)置在HTTP標(biāo)頭中(盡管JavaScript也可以直接在瀏覽器上設(shè)置cookie)。設(shè)置cookie的PHP腳本可能會(huì)發(fā)送看起來像這樣的標(biāo)題(瀏覽器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標(biāo)頭包含名稱值對,GMT日期,路徑和域。名稱和值將進(jìn)行URL編碼。expires字段是瀏覽器在給定時(shí)間和日期之后刪除cookie的指令。如果瀏覽器配置為存儲(chǔ)cookie,則會(huì)將此信息保留到有效期。如果用戶將瀏覽器指向與cookie的路徑和域匹配的任何頁面,它會(huì)將cookie重新發(fā)送到服務(wù)器。瀏覽器的標(biāo)題可能如下所示
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ù)最多需要六個(gè)參數(shù),應(yīng)在標(biāo)記之前調(diào)用。對于設(shè)置每一個(gè)cookie,必須單獨(dú)調(diào)用此函數(shù)。
setcookie(name, value, expire, path, domain, security);
這是所有參數(shù)的細(xì)節(jié)
● name - 設(shè)置cookie的名稱。
● value - 設(shè)置命名變量的值,并且是您實(shí)際要存儲(chǔ)的內(nèi)容。
● expire - 這指定自1970年1月1日格林尼治標(biāo)準(zhǔn)時(shí)間00:00:00以來的未來時(shí)間(以秒為單位)。在此之后,cookie將無法訪問。如果未設(shè)置此參數(shù),則在Web瀏覽器關(guān)閉時(shí)cookie將自動(dòng)過期。
● path - 指定cookie有效的目錄。單個(gè)正斜杠字符允許cookie對所有目錄有效。
● domain - 這可用于在非常大的域中指定域名,并且必須至少包含兩個(gè)有效期。所有cookie僅對創(chuàng)建它們的主機(jī)和域有效。
● security - 可以設(shè)置為1以指定cookie應(yīng)僅通過使用HTTPS的安全傳輸發(fā)送,否則設(shè)置為0,這意味著cookie可以通過常規(guī)HTTP發(fā)送。
以下示例將創(chuàng)建兩個(gè)cookie 名稱和年齡,這些cookie將在一小時(shí)后過期。
用PHP設(shè)置Cookies
提示:time()函數(shù)返回的是當(dāng)前的時(shí)間戳,也就是1970年1月一日0點(diǎn)0分0秒到腳本執(zhí)行的那一刻的秒數(shù)。
打開瀏覽器訪問腳本,然后按F12打開開發(fā)者模式,選擇Network(網(wǎng)絡(luò))選項(xiàng)卡,選擇Headers,可以看到如下圖所示:
使用PHP訪問Cookie
PHP提供了許多訪問cookie的方法。最簡單的方法是使用$_COOKIE變量。以下示例將訪問上面示例中設(shè)置的所有cookie。
用PHP訪問cookie "; echo $_COOKIE["age"] . "
"; ?>
您可以使用isset()函數(shù)來檢查是否設(shè)置了cookie。如果設(shè)置了再進(jìn)行輸出。
用PHP訪問cookie "; if(isset($_COOKIE["age"])) echo $_COOKIE["age"] . "
"; ?>
用PHP刪除Cookie
正式地說,要?jiǎng)h除一個(gè)cookie,你應(yīng)該只使用name參數(shù)調(diào)用setcookie()[也就是說想刪除那個(gè)name,把他設(shè)置成空],但這并不總是有效,不應(yīng)該依賴。最安全的做法是設(shè)置一個(gè)已經(jīng)過期的日期
/ 設(shè)置過去時(shí)間為當(dāng)前時(shí)間的之前的60秒 /
用PHP刪除cookie
以上便是PHP使用Cookie的方法,雖然從篇幅上看很復(fù)雜,但是示例代碼非常詳細(xì)且容易理解,如果想了解更多相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。