Session與Cookie的區別

2021-09-01 16:06:44 字數 2293 閱讀 8427

首先說下什麼是cookie?

cookie中的引數注要包括:名字,值,過期時間,路徑和網域名稱。路徑與網域名稱一起構成cookie的作用範圍。

如果說若不設定過期時間,則表示這個cookie的生命期為瀏覽器會話期間,即代表關閉瀏覽器視窗,cookie就會隨之消失。

另外在儲存的時候,會話cookie一般不儲存在硬碟上而是儲存在記憶體裡,雖然這種行為並不是規範規定的。若設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的過期時間。儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。而對於儲存在記憶體裡的cookie,不同的瀏覽器有不同的處理方式。

另外不同的瀏覽器所儲存的cookie大小也是不一樣,例如:

ie瀏覽器(7,8)每個網域名稱cookie限制為50個

firefox每個網域名稱cookie限制為50個

opera每個網域名稱cookie限制為30個

cookie注意事項:

1.setcookie()之前不能有任何html輸出,就是空格,空白行都不行

2.setcookie()之後,你在當前頁面呼叫echo $_cookie[『name』]不會有輸出,必須重新整理或到下乙個頁面在過期之前才可以看到cookie值

3.由於cookie資訊儲存於使用者的計算機中,name就有可能偽造或修改cookie,從而造成cookie欺騙,一般可以對cookie的值進行加密,來預防欺騙.讀取cookie的時候,對cookie解密即可.

4.cookie是儲存在客戶端的,使用者禁用了cookie,你的cookie自然也就沒有作用了

再來說下什麼是session?

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表的結構來儲存資訊。

當程式需要為某個客戶端的請求建立乙個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識,(稱為session id),如果已包含則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來。如果客戶端請求不包含session id,則為此客戶端建立乙個session並且生成乙個與此session相關聯的session id,session id的值應該是乙個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次響應中返回給客戶端儲存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給伺服器。一般這個cookie的名字都是類似於seeesionid。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時仍然能夠把session id傳遞歸伺服器。

session函式分析:

1.session_register() 在sessin生命週期中,使用全域性變數名稱將全域性變數註冊到當前的session中,所謂註冊,就是變數填入到$_session中,值為null,他不會對session檔案有任何的io操作,只是影響$_session變數

2.session_unregister() 作用相反

3.session_unset() 釋放當前記憶體中已經建立的所有$_session變數,但不刪除檔案以及不釋放對應的sessionid

4.unset()($_session)–是指在整個頁面(page)生命週期都能操作$_session陣列,再次訪問無法獲取到

5.session_destory() --登出session,取出session生命週期,刪除session檔案,但不影響$_session變數當session生命週期結束,session_register(),session_unset()

session_register()不能操作,而$_session依然是乙個全域性變數,他們脫離了對映關係,當再次開啟頁面檢測全域性變數為空

最主要的區別:

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙

考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能

考慮到減輕伺服器效能方面,應當使用cookie。

4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。

5、所以個人建議:將登陸資訊等重要資訊存放為session,其他資訊如果需要保留,可以放在cookie中

cookie與session的關聯

前提 cookie沒有被禁用。當用瀏覽器登入到某 伺服器時,先找對應的cookie檔案,當首次訪問是當然沒有cookie檔案,所以在請求頭部中沒有cookie的內容,即在請求頭部中沒有類似cookie jsessionid 的內容,這時當請求到達伺服器後,伺服器看請求頭中沒有jsessionid值,...

session與cookie的區別

讓我們用幾個例子來描述一下cookie和session機制之間的區別與聯絡。筆者曾經常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案 1 該店的店員很厲害,能記住每位顧客的消費數量,...

session與cookie的區別

1 session儲存在伺服器,客戶端不知道其中的資訊 cookie儲存在客戶端,伺服器能夠知道其中的資訊。2 session中儲存的是物件,cookie中儲存的是字串。3 session不能區分路徑,同乙個使用者在訪問乙個 期間,所有的session在任何乙個地方都可以訪問到。而cookie中如果...