會話技術之cookie

2021-09-24 20:34:59 字數 2588 閱讀 3572

http協議具有無連線和無狀態的特點  在提高效率的同時會讓伺服器與瀏覽器變得冰冷 即使以很快的速度連續開啟兩次**  伺服器依舊無法識別這是同乙個客戶  所以就需要使用會話技術使瀏覽器與伺服器相識 以及 可以讓瀏覽器訪問的不同指令碼之間資料共享 

會話技術 包括 cookie技術和session技術

cookie技術的實現 : 

當瀏覽器第一次訪問乙個**時 請求頭中沒有cookie資訊  

當伺服器收到請求做出響應時 會在響應頭增加乙個協議 set-cookie ="" 

然後瀏覽器接受到響應以及解析其中的set-cookie協議 得到cookie資料  並將cookie資料儲存到瀏覽器

下次訪問該伺服器其他指令碼的時候(cookie資料還未失效)  就會把cooie資料放在請求頭中 傳給指令碼 指令碼就可以識別 這是同乙個使用者

本質上就是利用瀏覽器作為踏板 實現不同指令碼之間的資料共享實現瀏覽器與伺服器之間是有連線的

通過php**設定伺服器返回的cookie資料

<?php 

setcookie('time','201906291633');

//第乙個引數為cooie資料的鍵名 在$_cookie陣列中 作為索引 第二個引數為cookie資料的值 在$_cookie陣列中 作為值

?>

在第一次執行這個**的時候開啟除錯臺  會發現只有響應頭中有相應的cookie資料 請求頭中不存在cookie資料

當不關閉瀏覽器 訪問其他指令碼或再次訪問自身指令碼時 就會發現請求頭中會提交cookie資料 

因為開啟的這個指令碼中沒有設定cookie 所有只會在請求頭中包含cookie資訊  而不會在 響應頭中包含資訊 

cookie存複雜資料 

//cookie 存複雜資料 由於setcookie的第二個引數只能是字元傳 所以打算存陣列資訊時 需要在取名時取成陣列形式

setcookie('name','ada');

setcookie('name','bom');

setcookie('name','cash');

//這樣的話就可以存入數陣列形式的資料 在$_cookie中 name對應的不是乙個值 而是乙個陣列

cookie 高階應用  可以控制cookie的生命週期以及訪問有效性

在控制台檢視從cookie時  後面的expires/max-age 就是他們的生命週期 預設 session 一次會話 我們可以人為設定乙個生命週期

setcookie('seven day','20190706' time()+7*24*3600);//第三個引數 型別為時間戳 其意義是cookie一直可以持續有意義的時間

//當天設定是 從當前的時間開始抑制持續到7天後

執行**後可以看到 expries/max-age 的值是 7.0 day 

現在檢視瀏覽器的cookie檔案

重啟瀏覽器後檢視cookie檔案 

可以看出我們改變了 sevenday 這個cookie的生命週期 我們可以利用這個特性 來刪除cookie資料 只需要把第三個引數改為  1 time()-1 等已經過去的時間戳即可 

控制台中有個path屬性 當前訪問路徑  cookie有乙個訪問路徑特性 就是預設 指令碼的cookie資料只能同級以及下級

但是在實際開發中 乙個**通常cookie是共享的 所以我們需要把該訪問路徑設定成根目錄

setcookie('anywhere','anywhere',0,"/");//訪問路徑設定到根目後 資料夾外的指令碼 也可以接受到cookie資料
setcookie('goout','go out',0,'/','.com');//這意味著 只要是.com結尾的網域名稱都會得到這個cookie 

//這意味著 只要是baidu.com結尾的網域名稱都會得到這個cookie

//同時控制台中對應cookie 的domin屬性 會變成引數設定的字串 .com baidu.com

常用會話技術之cookie

通過瀏覽器將使用者資料存在客戶端的會話技術.cookie按key value方式來存值的.如果cookie沒有設定有效期,cookie中資料是存在客戶端的記憶體中.如果cookie設定了有效期,cookie中資料就存在客戶端的硬碟上。1 優點 減輕伺服器端的壓力 使用者第二次載入資料時效率高 可長久...

Cookie 會話跟蹤技術

伺服器的請求流程 特點 1.只能使用純文字 2.檔案有大小的限制 4kb 3.數量限制 50條左右 4.讀取有網域名稱的限制,不可跨域讀取 5.有時效性 設定cookie document.cookie name value 1.用等號去間隔cookie的名和值 3.沒有設定過期時間的cookie,...

會話跟蹤技術 cookie

cookie是會話跟蹤技術的一種,是某些 為了辨別使用者身份而在儲存在使用者終端上的身份資訊。cookie cookie newcookie name value response.addcookie cookie 顯然,cookie的建立是通過兩個string型別引數,第乙個表示cookie名,第...