亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買(mǎi)流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷(xiāo)推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

PHP中Cookie及其使用

添加時(shí)間:2014-7-23 16:22:45  添加: 思海網(wǎng)絡(luò) 
  Cookie技術(shù)是一個(gè)非常有爭(zhēng)議的技術(shù),自經(jīng)誕生它就成了廣大網(wǎng)絡(luò)用戶和Web開(kāi)發(fā)人員的一個(gè)爭(zhēng)論焦點(diǎn)。有一些網(wǎng)絡(luò)用戶,甚至包括一些資深的Web專(zhuān)家也對(duì)它的產(chǎn)生和推廣感到不滿,這倒不是因?yàn)镃ookie技術(shù)的功能太弱或別的技術(shù)性能上的原因,而僅僅是因?yàn)樗麄冇X(jué)得Cookie 的使用,對(duì)網(wǎng)絡(luò)用戶的隱私構(gòu)成了危害。因?yàn)镃ookie是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)上購(gòu)物的方式或用戶訪問(wèn)該站點(diǎn)的次數(shù))。 

  那么Cookie 技術(shù)究竟怎樣呢?是否真的給網(wǎng)絡(luò)用戶帶來(lái)了個(gè)人隱私的危害呢?還是讓我們看了下面的內(nèi)容,再做回答吧。 

  (1)Cookie技術(shù)簡(jiǎn)介 

   在WEB技術(shù)發(fā)展史上,Cookie技術(shù)的出現(xiàn)是一個(gè)重大的變革。最先是Netscape在它的Netscape Navigator瀏覽器中引入了Cookie技術(shù),從那時(shí)起,World Wide Web 協(xié)會(huì)就開(kāi)始支持Cookie標(biāo)準(zhǔn)。以后又經(jīng)過(guò)微軟的大力推廣(因?yàn)槲④浀腎IS Web服務(wù)器所采用的ASP技術(shù)很大程度的使用了Cookie技術(shù)),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術(shù)。到現(xiàn)在,絕大多數(shù)的瀏覽器都支持Cookie技術(shù),或者至少兼容Cookie技術(shù)的使用。 

  1)什么是Cookie? 

  按照Netscape官方文檔中的定義,Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的 一種方式。Cookie 是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它可以包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)購(gòu)物的方式或用戶訪問(wèn)該站點(diǎn)的次數(shù))。無(wú)論何時(shí)用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問(wèn)Cookie信息。 

  通俗地講,瀏覽器用一個(gè)或多個(gè)限定的文件來(lái)支持Cookie。這些文件在使用Windows操作系統(tǒng)的機(jī)器上叫做Cookie 文件,在Macintosh機(jī)器上叫做magic Cookie 文件,這些文件被網(wǎng)站用來(lái)在上面存儲(chǔ)Cookie數(shù)據(jù)。 

  網(wǎng)站可以在這些Cookie 文件中插入信息,這樣對(duì)有些網(wǎng)絡(luò)用戶就有些副作用。有些用戶認(rèn)為這造成了對(duì)個(gè)人隱私的侵犯,更糟的是,有些人認(rèn)為Cookie是對(duì)個(gè)人空間的侵占,而且會(huì)對(duì)用戶的計(jì)算機(jī)帶來(lái)安全性的危害。 

  目前有些Cookie 是臨時(shí)的,另一些則是持續(xù)的。臨時(shí)的Cookie只在瀏覽器上保存一段規(guī)定的時(shí)間,一旦超過(guò)規(guī)定的時(shí)間該Cookie就會(huì)被系統(tǒng)清除。例如在PHP中Cookie被用來(lái)跟蹤用戶進(jìn)程直到用戶離開(kāi)網(wǎng)站。持續(xù)的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時(shí),仍然可以對(duì)它進(jìn)行調(diào)用。 

  在Cookie文件中保存Cookie,一些用戶會(huì)過(guò)分地認(rèn)為這將帶來(lái)很大的問(wèn)題。主要是有些用戶擔(dān)心Cookie會(huì)跟蹤用戶網(wǎng)上沖浪的習(xí)慣,譬如用戶喜愛(ài)到那些類(lèi)型的站點(diǎn)、愛(ài)從事些什么活動(dòng)等。害怕這種個(gè)人信息一旦落入一些別有用心的家伙手中,那么個(gè)人也就可能成為一大堆廣告垃圾的對(duì)象,甚至遭到意外的損害。不過(guò),這種擔(dān)心壓根兒不會(huì)發(fā)生,因?yàn)榫W(wǎng)站以外的用戶是無(wú)法跨過(guò)網(wǎng)站來(lái)獲得Cookie信息的。所以想以這種目的來(lái)應(yīng)用Cookie是不可能的。不過(guò),由于一些用戶錯(cuò)誤的理解以及“以訛傳訛”,一些瀏覽器開(kāi)發(fā)商別無(wú)選擇,只好作出相識(shí)的響應(yīng)(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie 的選項(xiàng))。 

  對(duì)Cookie技術(shù)期待了這么久的結(jié)果是,迫使許多瀏覽器開(kāi)發(fā)商在它們的瀏覽器中提供了對(duì)Cookie的靈活性控制功能。例如,目前的兩大主流瀏覽器Netscape Navigator 和 Internet Explorer是這樣處理Cookie的:Netscape Navigator4.0不但可以接受Cookie進(jìn)行警告,而且還可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽Cookie,但在Internet Explorer4.0中就只能進(jìn)行接受警告而沒(méi)有提供屏蔽選項(xiàng),不過(guò)在Internet Explorer4.0之后的更新版本中又加入了屏蔽Cookie的功能選項(xiàng)。 

  此外,很多最新的技術(shù)甚至已經(jīng)可以在不能屏蔽Cookie的瀏覽器上進(jìn)行Cookie的屏蔽了。例如,可以通過(guò)將Cookie文件設(shè)置成不同的類(lèi)型來(lái)限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會(huì)因此拒絕許多的站點(diǎn)頁(yè)面。因?yàn)楫?dāng)今已經(jīng)有許多Web站點(diǎn)開(kāi)發(fā)人員愛(ài)上了Cookie技術(shù)的強(qiáng)大功能, 

  例如Session對(duì)象的使用就離不開(kāi)Cookie的支持。 

  盡管今天仍有一些網(wǎng)絡(luò)用戶對(duì)于Cookie的爭(zhēng)論樂(lè)此不倦,但是對(duì)于絕大多數(shù)的網(wǎng)絡(luò)用戶來(lái)說(shuō)還是傾向于接受Cookie的。因此,我們盡可以放心地使用Cookie技術(shù)來(lái)開(kāi)發(fā)我們的WEB頁(yè)面。 

  2)Cookie是怎樣工作的? 

  要了解Cookie,必不可少地要知道它的工作原理。一般來(lái)說(shuō),Cookie通過(guò)HTTP Headers從服務(wù)器端返回到瀏覽器上。首先,服務(wù)器端在響應(yīng)中利用Set-Cookie header來(lái)創(chuàng)建一個(gè)Cookie ,然后,瀏覽器在它的請(qǐng)求中通過(guò)Cookie header包含這個(gè)已經(jīng)創(chuàng)建的Cookie,并且反它返回至服務(wù)器,從而完成瀏覽器的論證。 

  例如,我們創(chuàng)建了一個(gè)名字為login的Cookie來(lái)包含訪問(wèn)者的信息,創(chuàng)建Cookie時(shí),服務(wù)器端的Header 如下面所示,這里假設(shè)訪問(wèn)者的注冊(cè)名是“Michael Jordan”,同時(shí)還對(duì)所創(chuàng)建的Cookie的屬性如path、domain、expires等進(jìn)行了指定。 

  Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; 

    expires=Monday,01-Mar-99 00:00:01 GMT 

  上面這個(gè)Header會(huì)自動(dòng)在瀏覽器端計(jì)算機(jī)的Cookie文件中添加一條記錄。瀏覽器將變量名為“l(fā)ogin”的Cookie賦值為“Michael Jordon”。注意,在實(shí)際傳遞過(guò)程中這個(gè)Cookie的值是經(jīng)過(guò)了URLEncode方法的URL編碼操作的。 這個(gè)含有Cookie值的HTTP Header被保存到瀏覽器的Cookie文件后,Header就通知瀏覽器將Cookie通過(guò)請(qǐng)求以忽略路徑的方式返回到服務(wù)器,完成瀏覽器的認(rèn)證操作。 

  此外,我們使用了Cookie的一些屬性來(lái)限定該Cookie的使用。例如Domain屬性能夠在瀏覽器端對(duì)Cookie發(fā)送進(jìn)行限定,具體到上面的例子,該Cookie只能傳達(dá)室到指定的服務(wù)器上,而決不會(huì)跑到其他的如www.hp.com的Web站點(diǎn)上去。Expires屬性則指定了該Cookie保存的時(shí)間期限,例如上面的Cookie在瀏覽器上只保存到1999年3月1日1秒。當(dāng)然,如果瀏覽器上Cookie 太多,超過(guò)了系統(tǒng)所允許的范圍,瀏覽器將自動(dòng)對(duì)它進(jìn)行刪除。至于屬性Path,用來(lái)指定Cookie將被發(fā)送到服務(wù)器的哪一個(gè)目錄路徑下。 

  說(shuō)明:瀏覽器創(chuàng)建了一個(gè)Cookie后,對(duì)于每一個(gè)針對(duì)該網(wǎng)站的請(qǐng)求,都會(huì)在Header中帶著這個(gè)Cookie; 

  不過(guò),對(duì)于其他網(wǎng)站的請(qǐng)求Cookie是絕對(duì)不會(huì)跟著發(fā)送的。而且瀏覽器會(huì)這樣一直發(fā)送,直到Cookie過(guò)期為止。 

  上一部分講了有關(guān)Cookie的技術(shù)背景,這部分來(lái)說(shuō)說(shuō)在PHP里如何設(shè)置、使用、刪除Cookie,及Cookie的一些限制。PHP對(duì)Cookie支持是透明的,用起來(lái)非常方便。 

  1、設(shè)置Cookie 

  PHP用SetCookie函數(shù)來(lái)設(shè)置Cookie。必須注意的一點(diǎn)是:Cookie是HTTP協(xié)議頭的一部分,用于瀏覽器和服務(wù)器之間傳遞信息,所以必須在任何屬于HTML文件本身的內(nèi)容輸出之前調(diào)用Cookie函數(shù)。SetCookie 函數(shù)定義了一個(gè)Cookie,并且把它附加在HTTP頭的后面,SetCookie函數(shù)的原型如下:   

  int SetCookie(string name, string value, int expire, string path, string domain, int secure); 

  除了name之外所有的參數(shù)都是可選的。value,path,domain 三個(gè)參數(shù)可以用空字符串代換,表示沒(méi)有設(shè)置;expire和 secure兩個(gè)參數(shù)是數(shù)值型的,可以用0表示。expire參數(shù)是一個(gè)標(biāo)準(zhǔn)的Unix時(shí)間標(biāo)記,可以用time()或mktime() 函數(shù)取得,以秒為單位。secure參數(shù)表示這個(gè)Cookie是否通過(guò)加密的HTTPS協(xié)議在網(wǎng)絡(luò)上傳輸。 

  當(dāng)前設(shè)置的Cookie 不是立即生效的,而是要等到下一個(gè)頁(yè)面時(shí)才能看到.這是由于在設(shè)置的這個(gè)頁(yè)面里Cookie由服務(wù)器傳遞給客戶瀏覽器,在下一個(gè)頁(yè)面瀏覽器才能把Cookie從客戶的機(jī)器里取出傳回服務(wù)器的原因。在同一個(gè)頁(yè)面設(shè)置Cookie,實(shí)際是從后往前,所以如果要在插入一個(gè)新的Cookie之前刪掉一個(gè),你必須先寫(xiě)插入的語(yǔ)句,再寫(xiě)刪除的語(yǔ)句,否則可能會(huì)出現(xiàn)不希望的結(jié)果。  來(lái)看幾個(gè)例子: 

  簡(jiǎn)單的:  

  SetCookie("MyCookie", "Value of MyCookie"); 

  帶失效時(shí)間的:    

  SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小時(shí) 

  什么都有的:  

  SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1); 

  這里還有一點(diǎn)要說(shuō)明的,比如你的站點(diǎn)有幾個(gè)不同的目錄,那么如果只用不帶路徑的Cookie的話,在一個(gè)目錄下的頁(yè)面里設(shè)的Cookie在另一個(gè)目錄的頁(yè)面里是看不到的,也就是說(shuō),Cookie是面向路徑的。實(shí)際上,即使沒(méi)有指定路徑,WEB 服務(wù)器會(huì)自動(dòng)傳遞當(dāng)前的路徑給瀏覽器的,指定路徑會(huì)強(qiáng)制服務(wù)器使用設(shè)置的路徑。 

  解決這個(gè)問(wèn)題的辦法是在調(diào)用SetCookie時(shí)加上路徑和域名,域名的格式可以是“www.phpuser.com”,也可是“.phpuser.com”。 

  SetCookie函數(shù)里表示value的部分,在傳遞時(shí)會(huì)自動(dòng)被encode,也就是說(shuō),如果value的值是“test value”在傳遞時(shí)就變成了“test%20value”,跟URL的方法一樣。當(dāng)然,對(duì)于程序來(lái)說(shuō)這是透明的,因?yàn)樵赑HP接收Cookie的值時(shí)會(huì)自動(dòng)將其decode。 

  如果要設(shè)置同名的多個(gè)Cookie,要用數(shù)組,方法是:   

  SetCookie("CookieArray[]", "Value 1"); 

  SetCookie("CookieArray[]", "Value 2"); 

  或   

  SetCookie("CookieArray[0]", "Value 1"); 

  SetCookie("CookieArray[1]", "Value 2"); 

  2、接收和處理Cookie 

  PHP對(duì)Cookie的接收和處理的支持非常好,是完全自動(dòng)的,跟FORM變量的原則一樣,特別簡(jiǎn)單。比如設(shè)置一個(gè)名為MyCookier的Cookie,PHP會(huì)自動(dòng)從WEB服務(wù)器接收的HTTP頭里把它分析出來(lái),并形成一個(gè)與普通變量一樣的變量,名為$myCookie,這個(gè)變量的值就是Cookie的值。數(shù)組同樣適用。另外一個(gè)辦法是引用PHP的全局變量$HTTP_COOKIE_VARS數(shù)組。 

  分別舉例如下:(假設(shè)這些都在以前的頁(yè)面里設(shè)置過(guò)了,并且仍然有效)   

  echo $MyCookie; 

  echo $CookieArray[0]; 

  echo count($CookieArray); 

  echo $HTTP_COOKIE_VARS["MyCookie"]; 

  就這么簡(jiǎn)單。 

  3、刪除Cookie 

  要?jiǎng)h除一個(gè)已經(jīng)存在的Cookie,有兩個(gè)辦法: 

  一是調(diào)用只帶有name參數(shù)的SetCookie,那么名為這個(gè)name的Cookie 將被從關(guān)系戶機(jī)上刪掉;另一個(gè)辦法是設(shè)置Cookie的失效時(shí)間為time()或time()-1,那么這個(gè)Cookie在這個(gè)頁(yè)面的瀏覽完之后就被刪除了(其實(shí)是失效了)。 

  要注意的是,當(dāng)一個(gè)Cookie被刪除時(shí),它的值在當(dāng)前頁(yè)在仍然有效的。 

  4、使用Cookie的限制 

  首先是必須在HTML文件的內(nèi)容輸出之前設(shè)置; 

  其次不同的瀏覽器對(duì)Cookie的處理不一致,且有時(shí)會(huì)出現(xiàn)錯(cuò)誤的結(jié)果。比如:MS IE+SERVICE PACK 1不能正確處理帶域名和路徑的Cookie ,Netscape Communicator 4.05和MS IE 3.0不能正確處理不帶路徑和時(shí)間的Cookie。至于MS IE 5 好象不能處理帶域名、路徑和時(shí)間的Cookie。這是我在設(shè)計(jì)本站的頁(yè)面時(shí)發(fā)現(xiàn)的。 

  第三個(gè)限制是在客戶端的。一個(gè)瀏覽器能創(chuàng)建的Cookie數(shù)量最多為30個(gè),并且每個(gè)不能超過(guò)4KB,每個(gè)WEB站點(diǎn)能設(shè)置的Cookie總數(shù)不能超過(guò)20個(gè)。 

關(guān)鍵字:客戶端、Cookie、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專(zhuān)項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站