這篇文章帶給大家的內容是關於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中文網其他相關文章!