會話技術之Cookie 和 Session


為什么要使用會話技術

會話從字面上來說就是,就是兩個人說話,也就是兩個人交流,那么這里說的是計算機web端的交流,因為互聯網是基於HTTP傳輸信息的,而http傳輸是無狀態協議,缺少狀態,意味着如果后續需要前面的內容,必須重傳。也就是每一次連接都是獨立的請求,這樣就會給我們程序帶來不便,比如我們要登陸一個網站購買商品時,是不是每次打開一個頁面都需要登陸,答案是否定的,我可以給我的網址傳一個參數,雖然這樣能實現,但是沒實質性作用,也不安全,任何人都可以登陸。這時就需要用到下面學到的技術Cookie 和 Session,主要用來實現用戶登陸,跟蹤用戶等

Cookie

cookie 是一門瀏覽器技術,主要通過瀏覽器保存數據(主要保存在瀏覽器的某個文件中),因為cookie是以文件的形式保存在瀏覽器中,所以cookie也是區分瀏覽器的。因cookie是由服務器發送到瀏覽器的,所有保存在瀏覽器的數據,可以由服務器控制,保存什么、保存的狀態等。每次瀏覽器發出請求時,都會攜帶cookie,意味着服務器每次都可以拿到cookie數據,每次請求間的cookie數據是共享的。這樣就解決了我們的無狀態問題,用setcookie() 來設置我們的cookie值

當你第一次設置cookie值的時候,首先服務器響應一個cookie值,在下一次請求時,如果存在cookie,它都會攜帶,所以當你第一次設置一個cookie的時候,他是不會攜帶的。

按自己的思路,簡單的化了一個用cookie實現登陸的功能。刪除cookie,可以讓cookie時間過期,使用 setcookie('cookie名',time()-1);

Session

Session 技術與 Cookie 相似,都是用來儲存用戶信息的,最大不同是cookie是將數據存儲在客戶端電腦中,而session是把數據存在服務器系統下,不會被用戶或者其他人操作,相比更安全。我們通過session_start() 開啟會話,返回已經存在的會話。當設置一個session值時,將全部數據保存在服務器端,在客戶端會保存由服務器為用戶創建的一個Session標示符,成為Session ID,使用cookie技術保存Session ID
$_SESSION['name'] = "zhangsan";  刪除名字為name值session:  unset($_SESSION["name"]) ,刪除所有與Session $_SESSION = array(); session_destroy();
session 是基於cookie的,通常會有這樣的面試題,禁用cookie 后session 能用么?答案 理論上是可以的,可以通過get傳遞 session ID,但是這樣不夠安全,現在所有的瀏覽器都不會禁止cookie,所以我們使用基於cookie的session就是可以的

Session 默認有效期是關閉瀏覽器,為什么session會消失,主要原因是瀏覽器端cookie內保存的 sessionID 失效了,因為session是基於cookie的,所以關閉瀏覽器會失效。

瀏覽器關閉,session是不會馬上消失的。

如何延長session聲明周期,解決方案:延長cookie 和 session 的生存時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM