程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> cookie與session再比較

cookie與session再比較

編輯:PHP基礎知識
 

1、HTTP協議本身是無狀態的。

我們上網都要靠HTTP協議傳遞信息。比如我們在浏覽器裡鍵入:www.bokee.com這個網址並回車,你會發現網址會變成:http://www.bokee.com,其原因就是浏覽的網頁是基於http協議的。http協議無法記錄用戶經常上哪些網站,有什麼愛好,也無法記錄用戶的ID帳號和密碼。這就是所謂的HTTP協議無狀態。HTTP協議本身是無狀態的,這與HTTP協議本來的目的是相符的,客戶端只需要簡單的向服務器請求下載某些文件,無論是客戶端還是服務器都沒有必要紀錄彼此過去的行為,每一次請求之間都是獨立的,好比一個顧客和一個自動售貨機或者一個普通的(非會員制)大賣場之間的關系一樣,你認得它們,它們則肯定認不得你。

2、怎樣理解cookie和session?

由於cookie和session關系密切,這裡我們一並介紹。

打個比方:在河南時,我常到一家熟食店買饞嘴鴨,該店老板為了促進銷售,特發布“每購滿10只即可免費贈送一只”的優惠措施。除了家裡有什麼紅白喜事要飨客之外,應該不會有人一次性購買10只烤鴨吧?所以老板得想個法子來記錄顧客的消費數量,這裡總共有三種方案:

Ⅰ、老板記住每一個顧客的消費數量,等到顧客消費滿10只的時候自動奉送一只。這好比HTTP協議本身是有狀態的,可以記住顧客的活動行為。但遺憾的是,出於種種考慮http協議本身是不能有狀態的,老板自個也沒有這麼超常的記憶力,故這種方案行不通!

Ⅱ、老板發給顧客一張積分卡,上面記錄著消費的數量,一般還有個有效期限。每次買烤鴨時,如果顧客出示這張卡片,老板就知道這位顧客曾經光顧過小店。這種做法就是在客戶端保持狀態,好比是cookie技術。打開(windows系統)C:\Documents and Settings\用戶名\Cookies,你會發現一些*.txt格式的小文件,這就是你浏覽某些網站,它們發給你的“積分卡”(cookies)。

Ⅲ、老板發給顧客一張會員卡,除了卡號之外什麼信息也不紀錄,每次買烤鴨時,如果顧客出示該卡片,則老板搬出店裡的劃名冊,找到你的卡號並加1個積分。這種做法就是在服務器端保持狀態。

好比是session技術。

cookie和session最大的區別在於: cookie是把積分卡發給顧客,上面記錄了顧客所有的消費信息。Session則是把只有卡號(session id)的積分卡發給顧客,自家記錄了顧客所有的消費信息。Cookie是保存在客戶端的;session是保存在服務器端,而session id則是保存在客戶端,通常也是一個cookie小文件,由於這個小文件除了session id(好比卡號)外什麼也沒有,因此比cookie安全多了。

3、cookie和session有什麼用? 常見的用法,比如在有些網站下載東西需要會員先登陸。http協議本身是無狀態的,無法得知顧客是否已經登陸,怎麼辦呢?cookie和session就可以知道。再比如網上購物,購物車怎麼知道顧客挑選過哪些商品呢?cookie和session也可以記錄。總而言之,cookie和session就是能夠記錄顧客狀態的技術,盡管二者屬於不同的技術,但只要cookie能做到的,session也能做到!

COOKIE攻略

1、什麼是cookie?

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

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

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

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

如果你使用的是windows系統,那麼請打開C:\Documents and Settings\用戶名\Cookies,你會發現該目錄下有好多*.txt格式的小文件。那就是cookie文件。當然,在該目錄下你也可能什麼都發現不了,那時因為你新裝了系統或者從未浏覽過因特網,也或者你的浏覽器禁用了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的優秀品質,大多數人還是非常樂意使用它的。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved