首頁  >  文章  >  後端開發  >  cookie和session的詳細介紹(圖文)

cookie和session的詳細介紹(圖文)

不言
不言轉載
2019-02-15 13:25:193341瀏覽

這篇文章帶給大家的內容是關於cookie和session的詳細介紹(圖文),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

cookie技術

cookie是瀏覽器端的技術,可以在瀏覽器上保存資料的技術! cookie就是指的是瀏覽器上儲存的資料!

PHP支援cookie技術! php可以向瀏覽器發出指令,從而將資料保存到瀏覽器上!

瀏覽器負責保存數據,而php負責控制瀏覽器保存那些數據! (php在是使用瀏覽器上cookie技術)

保存在瀏覽器上的cookie數據,可以在瀏覽器每次向伺服器請求時,都可以攜帶該數據,向伺服器發出請求,此時伺服器上的腳本就可以獲得該數據!

基本上使用

設定cookie 變量,增,改,刪除

利用內部函數 setcookie 完成

#形式:setcookie(名字,值)

取得cookie 變量,讀取

使用預先定義數組變數:$_COOKIE

#該變數內保存所有從瀏覽器請求時所攜帶的cookie資料!

每個元素就是一個cookie變數資料!下標是名字,值,就是值!

基本原理

利用firebug的網路標籤:

設定時,做了什麼?

在回應時,伺服器發送了一條指令,在瀏覽器上增加一個cookie變數!

瀏覽器接到該指令後,在瀏覽器上增加了一個cookie資料!

取得時,做了什麼?

瀏覽器會將目前網站的所有的cookie在請求時都攜帶到伺服器上!

php會自動取得到瀏覽器攜帶的cookie,形成$_COOKIE數組,使用者腳本使用!

進階使用

1.cookie資料只能是字串資料!

 

2.setcookie函數,可以完成增,修改,刪除!

不存在,則增加,存在則修改!

刪除,可以採用將值,置空的形式!

3.cookie變數的失效期

#cookie資料存在有效期的概念:

默認,臨時cookie。會儲存到瀏覽器關閉!

同時,支持,增加setcookie的第三個參數,來修改cookie變數的有效期限。有效期限的表示方式,是時間戳,表示到哪個時間點,失效!

php可以透過 time()函數,得到目前的時間戳,time()增加增量的形式延長cookie時間!

此時,伺服器會向瀏覽器發出以下指令:

網路上表示時間,都是用格林威治平時!沒有時區概念的那個時間! GMT

瀏覽器知道cookie變數的有效期限!

常用的動作:

 

##1 .cookie存在有效路徑的概念#

cookie變數是只在目前目錄,及其後代目錄才會生效!

test/下設定, test/sub/下可以存取

#反過來:

# # 

那是由於該cookie:

可以更改cookie資料的有效路徑:

透過setcookie的第四個參數做修改:

/ 表示網站根目錄有效!整站有效!

5,cookie子網域的概念

cookie是嚴格區分網域的。

支援在子網域之間是可以共享的:

利用第五個參數設定

#有效期,有效路徑,有效子域名!

6,$_COOKIE是捕獲不了目前腳本所設定的cookie變數的!

$_COOKIE是,瀏覽器請求時所攜帶的所有cookie!

目前設定的下次使用請求才好用!

session技術,會話技術

場景:

cookie的問題

由於是資料本身是在瀏覽器端:

資料的安全性問題!

資料總是要在請求時攜帶!

怎麼解決,注意保持在瀏覽器的多次請求間共享資料!

將資料放在伺服器端,同時是資料區分瀏覽器,在瀏覽器的多次請求間共用資料!

在伺服器上,為來訪的每台瀏覽器增加一個資料空間,然後為這些資料空間分配不同唯一的識別碼!為每個瀏覽器分配一個唯一的標識,該標誌應該伺服器端資料庫空間的標識應該一一對應

要求,瀏覽器每次請求時攜帶標識,此時伺服器可以獲得標識,利用標識確定資料空間,但卻請求的所有的資料處理,都在目前的確定的空間內完成!

將伺服器指派給瀏覽器的唯一識別存在瀏覽器的cookie內,可以保證瀏覽器每次來時都會攜帶!

伺服器為每一個新瀏覽器存取(沒有確定標識的瀏覽器),確定標識,並在伺服器上產生一個唯一的資料空間!

基本上使用

直接操作$_SESSION數組,就可以完成session資料的存,取!

每個session數據,就對應$_SESSION內的一個元素!對元素操作,就是對session資料做操作!

但是,session技術,包含生產session標識,開啟session資料空間,為瀏覽器分配session標識等等,都需要PHP的session機制支援!

因此,需要先開啟session的支持,才能操作$_SESSION變量,從而去操作session資料!

開啟:

session_start();

#操作:

##$_SESSION;

先開啟後操作:

#更新與刪除:

基本原理

瀏覽器端cookie中儲存的sessionID:

目前瀏覽器第一次對伺服器發出請求時,伺服器無法確定瀏覽器的識別

會重新產生一個唯一標識,以cookie的形式儲存到瀏覽器端!

其中預設的cookie變數名稱為:PHPSESSID。

該cookie標量,也稱為sessionID!

#########當瀏覽器擁有了sessionid這個cookie變數後,接下來的請求都會攜帶該ID發出請求:###

伺服器的端的是session資料空間

預設情況下,php,會將保存session資料的空間,產生一個檔案來完成!透過文件的名稱來區分屬於哪個ID的!

預設的被保存在伺服器作業系統的暫存目錄內:

#大概的流程:

##測試:

使用session來完成登陸識別驗證:

######

以上是cookie和session的詳細介紹(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除