在php 中cookie是我們常用到的,但是可能很多朋友都不知道cookie是怎么工作的,下面小編來(lái)給大家整理一下關(guān)于php cookie
工作原理與一些對(duì)于cookie讀寫操作實(shí)例。
Cookie和會(huì)話狀態(tài)
做BS開發(fā),這兩個(gè)概念必不可少,先來(lái)個(gè)大概了解,沒(méi)有實(shí)際應(yīng)用很難深入,深入看參考地址!
什么是 Cookie?
Cookie 是一小段文本信息,伴隨著用戶請(qǐng)求和頁(yè)面在 Web 服務(wù)器和瀏覽器之間傳遞。用戶每次訪問(wèn)站點(diǎn)時(shí),Web 應(yīng)用程序都可以讀取 Cookie 包含的信息。 Cookie 的基本工作原理如果用戶再次訪問(wèn)站點(diǎn)上的頁(yè)面,當(dāng)該用戶輸入 URLwww.*****.com時(shí),瀏覽器就會(huì)在本地硬盤上查找與該 URL 相關(guān)聯(lián)的 Cookie。如果該 Cookie 存在,瀏覽器就將它與頁(yè)面請(qǐng)求一起發(fā)送到您的站點(diǎn)。
Cookie 有哪些用途?
最根本的用途是:Cookie 能夠幫助 Web 站點(diǎn)保存有關(guān)訪問(wèn)者的信息。更概括地說(shuō),Cookie 是一種保持Web 應(yīng)用程序連續(xù)性(即執(zhí)行“狀態(tài)管理”)的方法.使 Web 站點(diǎn)記住您.
•當(dāng)客戶訪問(wèn)某個(gè)基于PHP技術(shù)的網(wǎng)站時(shí),在PHP中可以使用setcookie()函數(shù)生成一個(gè)cookie,系統(tǒng)經(jīng)處理把這個(gè)cookie發(fā)送到客戶端并保存在C:Documents andSettings用戶名Cookies目錄下。
•cookie是HTTP標(biāo)頭的一部分,因此setcookie()函數(shù)必須在HTML本身的任何內(nèi)容送到瀏覽器之前調(diào)用。這種限制與header()函數(shù)一樣(如需了解head()函數(shù),請(qǐng)自行查閱)。
•當(dāng)客戶再次訪問(wèn)該網(wǎng)站時(shí),瀏覽器會(huì)自動(dòng)把C:DocumentsandSettings用戶名Cookies目錄下與該站點(diǎn)對(duì)應(yīng)的cookie發(fā)送到服務(wù)器,服務(wù)器則把從客戶端傳來(lái)的cookie將自動(dòng)地轉(zhuǎn)化成一個(gè)PHP變量。在PHP5中,客戶端發(fā)來(lái)的cookie將被轉(zhuǎn)換成全局變量。你可以通過(guò)$_COOKIE[‘xxx']讀取。
定義一個(gè)cookie
•設(shè)置cookie:
•語(yǔ)法:boolsetcookie(stringname,[stringvalue,[int expire,[stringpath,[stringdomain,[int secure]]]]]);
本cookie函數(shù)可以有6個(gè)屬性,常用的有3個(gè)參數(shù)。
1.實(shí)例:
代碼如下:
$value="the best way is by yourself";
setcookie("cookiename",$value,time()+60*60*24*7);
1.接收和處理cookie
PHP對(duì)cookie有很好的支持,和form表單一樣,接收的時(shí)候PHP會(huì)自動(dòng)從web服務(wù)器接收HTTP頭并且它。接收的時(shí)候和表單接收一樣,用$_COOKIE[“cookiename”]或者$HTTP_COOKIE_VARS[“cookiename”](不提倡使用)
1.注意:
如果網(wǎng)站有幾個(gè)不同的文件目錄,使用不帶路徑的cookie,那么只能在設(shè)置cookie的文件所在路徑下訪問(wèn)到此cookie。如果指定路徑,則按照設(shè)置時(shí)的路徑作為訪問(wèn)cookie的指定路徑。
創(chuàng)建cookie數(shù)組:
1.其一:
代碼如下:
setcookie("CookieArray[0]","Value1");
setcookie("CookieArray[1]","Value2");
1.其二:
代碼如下:
setcookie("CookieArray['one']","Value1");
setcookie("CookieArray['two']","Value2");
1.setcookie()中使用數(shù)組
代碼如下:
<?php
setcookie("cookie[three]","cookiethree");
setcookie("cookie[two]","cookietwo");
setcookie("cookie[one]","cookieone");
//刷新頁(yè)面后,顯示出來(lái)
if(isset($_COOKIE['cookie'])){
foreach($_COOKIE['cookie']as$name=>$value){
echo"$name:$value<br/>n";
}
}
?>
刪除cookie
1.要?jiǎng)h除一個(gè)已經(jīng)存在的cookie,有兩個(gè)辦法:
1、調(diào)用只帶有name參數(shù)的setcookie,那么名為這個(gè)name的cookie將被從客戶機(jī)上刪掉;
setcookie(“MyCookie”);//刪除MyCookie
2、期時(shí)間就行,那么這個(gè)Cookie在這個(gè)頁(yè)面的瀏覽完之后就被刪除了(其實(shí)是失效了)。
例如:
代碼如下:
setcookie(“MyCookie”,”Value”,time()-1);
//刪除MyCookie。
要注意:當(dāng)一個(gè)Cookie被刪除時(shí),它的值在當(dāng)前頁(yè)仍然有效。如果要把cookie設(shè)置成在瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0,或者不設(shè)置此值。
例如:setcookie(“name”,”value”,0)。
cookie注意事項(xiàng)
•1、setcookie()之前不能有任何html輸出,就是空格,空白行都不行,必須在html文件的內(nèi)容輸出前設(shè)置
•2、setcookie()后,你在當(dāng)前頁(yè)調(diào)用echo$_COOKIE[“name”]不會(huì)有輸出。必須刷新或到下一個(gè)頁(yè)面才可以看到cookie值。
•3、不用瀏覽器對(duì)cookie處理不同??蛻舳丝梢越胏ookie,瀏覽器也會(huì)限制cookie的數(shù)量。一個(gè)瀏覽器能創(chuàng)建的cookie數(shù)量最多為300個(gè),并且每個(gè)不能超過(guò)4KB,每個(gè)WEB站點(diǎn)能設(shè)置的cookie總數(shù)不能超過(guò)20個(gè)。
•4、cookie是保存在客戶端的,用戶禁用了cookie,你的cookie自然也就沒(méi)作用啦!因此,避免過(guò)度依賴cookie,要先想好如果cookie被禁用時(shí)的解決方案,以備萬(wàn)一。
以上就是對(duì) PHP cookie 資料的整理,有需要的朋友可以參考下。