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

php 中cookie和session的差異以及cookie和session的用法詳解

Jul 10, 2017 am 10:06 AM
cookie php 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

熱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

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

See all articles