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

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

PHP中Cookie及其使用

添加時間:2014-7-23 16:22:45  添加: 思海網絡 
  Cookie技術是一個非常有爭議的技術,自經誕生它就成了廣大網絡用戶和Web開發人員的一個爭論焦點。有一些網絡用戶,甚至包括一些資深的Web專家也對它的產生和推廣感到不滿,這倒不是因為Cookie技術的功能太弱或別的技術性能上的原因,而僅僅是因為他們覺得Cookie 的使用,對網絡用戶的隱私構成了危害。因為Cookie是由Web服務器保存在用戶瀏覽器上的小文本文件,它包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點上購物的方式或用戶訪問該站點的次數)。 

  那么Cookie 技術究竟怎樣呢?是否真的給網絡用戶帶來了個人隱私的危害呢?還是讓我們看了下面的內容,再做回答吧。 

  (1)Cookie技術簡介 

   在WEB技術發展史上,Cookie技術的出現是一個重大的變革。最先是Netscape在它的Netscape Navigator瀏覽器中引入了Cookie技術,從那時起,World Wide Web 協會就開始支持Cookie標準。以后又經過微軟的大力推廣(因為微軟的IIS Web服務器所采用的ASP技術很大程度的使用了Cookie技術),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術。到現在,絕大多數的瀏覽器都支持Cookie技術,或者至少兼容Cookie技術的使用。 

  1)什么是Cookie? 

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

  通俗地講,瀏覽器用一個或多個限定的文件來支持Cookie。這些文件在使用Windows操作系統的機器上叫做Cookie 文件,在Macintosh機器上叫做magic Cookie 文件,這些文件被網站用來在上面存儲Cookie數據。 

  網站可以在這些Cookie 文件中插入信息,這樣對有些網絡用戶就有些副作用。有些用戶認為這造成了對個人隱私的侵犯,更糟的是,有些人認為Cookie是對個人空間的侵占,而且會對用戶的計算機帶來安全性的危害。 

  目前有些Cookie 是臨時的,另一些則是持續的。臨時的Cookie只在瀏覽器上保存一段規定的時間,一旦超過規定的時間該Cookie就會被系統清除。例如在PHP中Cookie被用來跟蹤用戶進程直到用戶離開網站。持續的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時,仍然可以對它進行調用。 

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

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

  此外,很多最新的技術甚至已經可以在不能屏蔽Cookie的瀏覽器上進行Cookie的屏蔽了。例如,可以通過將Cookie文件設置成不同的類型來限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會因此拒絕許多的站點頁面。因為當今已經有許多Web站點開發人員愛上了Cookie技術的強大功能, 

  例如Session對象的使用就離不開Cookie的支持。 

  盡管今天仍有一些網絡用戶對于Cookie的爭論樂此不倦,但是對于絕大多數的網絡用戶來說還是傾向于接受Cookie的。因此,我們盡可以放心地使用Cookie技術來開發我們的WEB頁面。 

  2)Cookie是怎樣工作的? 

  要了解Cookie,必不可少地要知道它的工作原理。一般來說,Cookie通過HTTP Headers從服務器端返回到瀏覽器上。首先,服務器端在響應中利用Set-Cookie header來創建一個Cookie ,然后,瀏覽器在它的請求中通過Cookie header包含這個已經創建的Cookie,并且反它返回至服務器,從而完成瀏覽器的論證。 

  例如,我們創建了一個名字為login的Cookie來包含訪問者的信息,創建Cookie時,服務器端的Header 如下面所示,這里假設訪問者的注冊名是“Michael Jordan”,同時還對所創建的Cookie的屬性如path、domain、expires等進行了指定。 

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

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

  上面這個Header會自動在瀏覽器端計算機的Cookie文件中添加一條記錄。瀏覽器將變量名為“login”的Cookie賦值為“Michael Jordon”。注意,在實際傳遞過程中這個Cookie的值是經過了URLEncode方法的URL編碼操作的。 這個含有Cookie值的HTTP Header被保存到瀏覽器的Cookie文件后,Header就通知瀏覽器將Cookie通過請求以忽略路徑的方式返回到服務器,完成瀏覽器的認證操作。 

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

  說明:瀏覽器創建了一個Cookie后,對于每一個針對該網站的請求,都會在Header中帶著這個Cookie; 

  不過,對于其他網站的請求Cookie是絕對不會跟著發送的。而且瀏覽器會這樣一直發送,直到Cookie過期為止。 

  上一部分講了有關Cookie的技術背景,這部分來說說在PHP里如何設置、使用、刪除Cookie,及Cookie的一些限制。PHP對Cookie支持是透明的,用起來非常方便。 

  1、設置Cookie 

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

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

  除了name之外所有的參數都是可選的。value,path,domain 三個參數可以用空字符串代換,表示沒有設置;expire和 secure兩個參數是數值型的,可以用0表示。expire參數是一個標準的Unix時間標記,可以用time()或mktime() 函數取得,以秒為單位。secure參數表示這個Cookie是否通過加密的HTTPS協議在網絡上傳輸。 

  當前設置的Cookie 不是立即生效的,而是要等到下一個頁面時才能看到.這是由于在設置的這個頁面里Cookie由服務器傳遞給客戶瀏覽器,在下一個頁面瀏覽器才能把Cookie從客戶的機器里取出傳回服務器的原因。在同一個頁面設置Cookie,實際是從后往前,所以如果要在插入一個新的Cookie之前刪掉一個,你必須先寫插入的語句,再寫刪除的語句,否則可能會出現不希望的結果。  來看幾個例子: 

  簡單的:  

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

  帶失效時間的:    

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

  什么都有的:  

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

  這里還有一點要說明的,比如你的站點有幾個不同的目錄,那么如果只用不帶路徑的Cookie的話,在一個目錄下的頁面里設的Cookie在另一個目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實際上,即使沒有指定路徑,WEB 服務器會自動傳遞當前的路徑給瀏覽器的,指定路徑會強制服務器使用設置的路徑。 

  解決這個問題的辦法是在調用SetCookie時加上路徑和域名,域名的格式可以是“www.phpuser.com”,也可是“.phpuser.com”。 

  SetCookie函數里表示value的部分,在傳遞時會自動被encode,也就是說,如果value的值是“test value”在傳遞時就變成了“test%20value”,跟URL的方法一樣。當然,對于程序來說這是透明的,因為在PHP接收Cookie的值時會自動將其decode。 

  如果要設置同名的多個Cookie,要用數組,方法是:   

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

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

  或   

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

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

  2、接收和處理Cookie 

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

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

  echo $MyCookie; 

  echo $CookieArray[0]; 

  echo count($CookieArray); 

  echo $HTTP_COOKIE_VARS["MyCookie"]; 

  就這么簡單。 

  3、刪除Cookie 

  要刪除一個已經存在的Cookie,有兩個辦法: 

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

  要注意的是,當一個Cookie被刪除時,它的值在當前頁在仍然有效的。 

  4、使用Cookie的限制 

  首先是必須在HTML文件的內容輸出之前設置; 

  其次不同的瀏覽器對Cookie的處理不一致,且有時會出現錯誤的結果。比如:MS IE+SERVICE PACK 1不能正確處理帶域名和路徑的Cookie ,Netscape Communicator 4.05和MS IE 3.0不能正確處理不帶路徑和時間的Cookie。至于MS IE 5 好象不能處理帶域名、路徑和時間的Cookie。這是我在設計本站的頁面時發現的。 

  第三個限制是在客戶端的。一個瀏覽器能創建的Cookie數量最多為30個,并且每個不能超過4KB,每個WEB站點能設置的Cookie總數不能超過20個。 

關鍵字:客戶端、Cookie、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站