搜尋
首頁後端開發php教程php 中cookie和session的差異以及cookie和session的用法詳解

這篇文章主要介紹了PHP中cookie和session的區別及cookie和session用法小結的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下

#具體來說cookie 是保存在「客戶端」的,而session是保存在「服務端」的

cookie 是透過擴充http協定實現的

cookie 主要包括:名字,值,過期時間,路徑和域;

##如果cookie不設定

生命週期,則以瀏覽器關閉而關閉,這種cookie一般儲存在記憶體而不是硬碟上.若設定了生命週期則相反,不隨瀏覽器的關閉而消失,這些cookie仍然有效直到超過設定的過期時間。

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傳回伺服器。

優缺點:

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


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

考慮到安全應當使用session。

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

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


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


5、所以個人建議:

將登陸資訊等重要資訊存放為SESSION


其他資訊如果需要保留,可以放在COOKIE中

Session和Cookie的使用總結:

#Session和cookie都是

asp.Net中的內建對象,至於他們有什麼區別,在這裡就不在多說,現在來說說一些比較實用點的東西:

我們知道網站都有一個後台管理系統,其中有登入和退出兩個功能,在登入的時候我們往往會把使用者的資訊儲存到session或cookie中,以便後面使用,那麼在登入的時候我們要注意哪些呢?


1、把一些敏感的東西存到session中,不太敏感的東西可以存在session或Cookie中,例如使用者名稱就是不太敏感,但是介於有些瀏覽器不支援cookie的使用,所以我們會把它存到session中,但是session有的時候在伺服器中容易丟失,所以我們可以結合cookie一起使用,就是說當session的丟失的時候,如果cookie還在我們設定的有效期內,就可以再一次從Cookie中取出值放進session裡,所以我們最好同時用session和cookie保存用戶名等資訊或在

設定檔

程式碼如下:

<sessionState timeout="2" mode="StateServer" />

來解決session丟失的問題也可以


2、我們希望後台管理在多長時間沒有操作的情況下,讓session失效,重新登錄,可以使用session .timeout=5,以分鐘為單位,表示5分鐘內沒有其他操作,就失效,或者在配置文件中配置也可以


3、cookie有效期限的設定


httpCookie.Expires = DateTime.Now.AddMinutes(2);


cookie的有效期限為2分鐘


4、頁面中判斷是否有權限存取該網頁的時候,可以如下判斷:

if (Request.Cookies["httpCookie"] != null)
{
Session["admin"] = Request.Cookies["httpCookie"].Values["admin"].ToString();
}
if (Session["admin"] == null)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(&#39;请重新登 录&#39;);location.href=&#39;logins.aspx&#39;</script>");
}

下面在來說說退出的時候該怎麼做比較好

1、 退出的時候session和Cookie的值都要清空,現在來簡單說說session的幾個方法的差別:


Session.clear():表示將會話中所有的session的鍵值都清空,但是session還是依然存在,同等於Session.RemoveAll()

Session[“admin”] =null:表示將制定的鍵的值清空,並釋放掉,和session[“admin”]=””不一樣,它清空了,但是session不釋放,同等於session.Remove(“name”);

Session.Abandon()就是把目前Session物件刪除了,下一次就是新的Session了。

主要的不同之處在於當使用Session.Abandon時,會呼叫Session_End方法(InProc模式下)。當下一個請求到來時將激發Session_Start方法。而Session.Clear只是清除Session中的所有資料並不會中止該

Session,因此也不會呼叫那些方法,Abandon方法用於主動結束會話,若沒有呼叫該方法,當會話逾時後,也會自動結束目前會話。

2、 下面在來看看如何清除cookie

A、tpCookie cookie = System.Web.HttpContext.Current.Request.Cookies .Get("tuser");

cookie.Expires = DateTime.Now.AddDays(-1);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

B、tpCookie httpCookie = Request.Cookies["httpCookie"];

httpCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(httpCookie);

AB兩種方法都可以

3、 所以session清除目前的值就可以了即Session[“admin']=null就可以了,Cookie按照以上方法清除即可

#建議與意見:

1、在退出的時候我們可以在創建一個logout的頁面來寫時間,這樣比較好一些

2、 無論在進行什麼操作的時候,能用If判斷是否為空的情況下就盡量的判斷,防止出現了空指針異常

以上是php 中cookie和session的差異以及cookie和session的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何修改PHP會話中存儲的數據?您如何修改PHP會話中存儲的數據?Apr 27, 2025 am 12:23 AM

tomodifyDataNaphPsession,startTheSessionWithSession_start(),然後使用$ _sessionToset,修改,orremovevariables.1)startThesession.2)setthesession.2)使用$ _session.3)setormodifysessessvariables.3)emovervariableswithunset()

舉一個在PHP會話中存儲數組的示例。舉一個在PHP會話中存儲數組的示例。Apr 27, 2025 am 12:20 AM

在PHP會話中可以存儲數組。 1.啟動會話,使用session_start()。 2.創建數組並存儲在$_SESSION中。 3.通過$_SESSION檢索數組。 4.優化會話數據以提升性能。

垃圾收集如何用於PHP會議?垃圾收集如何用於PHP會議?Apr 27, 2025 am 12:19 AM

PHP會話垃圾回收通過概率機制觸發,清理過期會話數據。 1)配置文件中設置觸發概率和會話生命週期;2)可使用cron任務優化高負載應用;3)需平衡垃圾回收頻率與性能,避免數據丟失。

如何在PHP中跟踪會話活動?如何在PHP中跟踪會話活動?Apr 27, 2025 am 12:10 AM

PHP中追踪用戶會話活動通過會話管理實現。 1)使用session_start()啟動會話。 2)通過$_SESSION數組存儲和訪問數據。 3)調用session_destroy()結束會話。會話追踪用於用戶行為分析、安全監控和性能優化。

如何使用數據庫存儲PHP會話數據?如何使用數據庫存儲PHP會話數據?Apr 27, 2025 am 12:02 AM

利用數據庫存儲PHP會話數據可以提高性能和可擴展性。 1)配置MySQL存儲會話數據:在php.ini或PHP代碼中設置會話處理器。 2)實現自定義會話處理器:定義open、close、read、write等函數與數據庫交互。 3)優化和最佳實踐:使用索引、緩存、數據壓縮和分佈式存儲來提升性能。

簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能