#cookie 與 session
cookie 與 session 是一對形影不離的好兄弟,所以:有cookie就會有sesssion,有session 就會有cookie。
cookie存在于客戶端,session存在于服務端。cookie與session相配合,實現了用戶認證的功能,解決了張三是張三的問題。
我們用下圖來模擬一下客戶端與服務端之間的對話:

是的,過程就這么簡單,在實際的請求過程中,也的確如上圖一樣,cookie就這樣產生了。
總結如下:
1、當瀏覽器第一次訪問服務器時,確切地說是一個域名時,那么是不會帶有cookie信息的,然后服務器就會給它分配一個。只要服務器為瀏覽器分配了cookie,那么在以后的訪問中,瀏覽器就會自動帶上這個cookie來訪問我們了。
2、當然了,我們還會為這個cookie設置一個過期時間,如果超過了這個時間點,瀏覽器再訪問服務器時,就會擯棄這個cookie,然后再由服務器給它分配另一個cookie。
cookie的確是一個敏感信息,因為如果用戶掌握到了我們的cookie,就會以我們的身份去訪問那個站點。所以cookie是不能夠跨域的,就是說,A服務器為瀏覽器分配的cookie,瀏覽器在訪問B站點時,是不會帶上A服務器為其分配的cookie的。
在firefox中,我們如下查看cookie信息。

在chrome中,我們如下查看cookie信息。

> 在這里,我們之所以要利用一些工具來查看cookie信息,是由于cookie的傳遞對于我們而言是透明的。瀏覽器由于自動進行了cookie傳遞,使得我們即使沒有寫發送cookie的代碼,但cookie還是會由瀏覽器自動發送給服務器。當然,服務器發送給瀏覽器的cookie也是一樣。這也是我們在分析一些數據流時,往往省略cookie數據的原因。
請多打開幾個站點,看看他們都使用了什么cookie信息。
至于session,可以存在文件中,可以存在數據中,還可以存在于另外一些服務器(一臺專門運行內存對象緩存系統的電腦)的內存中,它把數據存在哪里,以及怎么存儲或讀取的,并不是我們學習的重點。我們只需要知道,每一個cookie對應著<span class="text-danger">唯一</span>的一個session就可以了。
> session可以簡單認為是一個小的數據庫系統,它可以憑借一個叫做cookie的憑證來讀取、寫入、修改、刪除數據。和數據庫系統不同的是,它存的數據是有『有效期』的,過了這個有效期,它便會銷毀數據。
在本章中,我們也正是利用了cookie與session的<span class="text-danger">唯一</span>性,來實現了用戶認證。基本的驗證流程如下:

cookie與session同時也是安全問題的一部分,前期有個了解就好,隨著我們繼續學習,以后將有機會在這方面進行深入的學習。
- 序言
- 第一章 準備知識
- 第一節:XAMPP
- 第二節:NAVICAT
- 第三節:GIT
- 第二章 HelloWorld
- 第一節:下載THINPHP5.0
- 第二節:啟動xampp
- 第三節:hello thinkphp
- 第四節:Hello world
- 第五節:MCA
- 第六節:單引號與雙引號
- 第三章 教師管理
- 第一節:新建數據庫
- 第二節:CURD之R 讀數據
- 3.2.1 時序圖
- 3.2.2 連接數據庫
- 3.2.3 直接讀取數據
- 3.2.4 間接讀取數據
- 3.2.5 使用V層顯示數據
- 3.2.6 引入bootstrap
- 3.2.7 加入bootstrap樣式
- 第三節:CURD之 C 增加數據
- 3.3.1 插入數據
- 3.3.2 表單傳值
- 3.3.3 存儲表單數據
- 3.3.4 自動時間戳
- 3.3.5 增加驗證
- 第四節:CURD之 D 刪除數據
- 3.4.1 什么是關鍵字
- 3.4.2 刪除數據
- 3.4.3 定制刪除鏈接
- 3.4.4 完善刪除
- 第五節:CURD之 U 更新數據
- 3.5.1 讀取數據
- 3.5.2 展示數據
- 3.5.3 修改數據
- 3.5.4 傳遞數據
- 3.5.5 接收數據
- 3.5.6 更新數據 方法一
- 3.5.7 更新數據 方法二
- 第六節:銜接各個action & 重構代碼
- 3.6.1 index action
- 3.6.2 add action
- 3.6.3 insert action
- 3.6.4 delete action
- 3.6.5 edit action
- 3.6.6 update action
- 第七節:分頁
- 3.7.1 調用內置分頁
- 3.7.2 select與paginate(選學)
- 3.7.3 分頁原理(選學)
- 3.7.4 調用page(選學)
- 第八節:模糊查詢
- 3.8.1 增加查詢
- 3.8.2 完善查詢
- 第四章 登錄與注銷
- 第一節:cookie 與 session
- 第二節:靜態方法
- 第三節:規劃URL跳轉
- 第四節:登錄
- 4.4.1 登錄流程
- 4.4.2 index action
- 4.4.3 login action
- 4.4.4 引入M層
- 4.4.5 異常Exception
- 第五節:注銷
- 第六節:驗證
- 4.6.1 action增加驗證
- 4.6.2 使用構造函數驗證
- 4.6.3 使用繼承驗證
- 第五章 E-R圖與數據字典
- 第一節:第一張E-R圖
- 第二節:實體間的關系
- 第三節:開發規范
- 第六章 班級管理
- 第一節:建立數據表
- 第二節:數據列表index
- 第三節:增加數據add
- 第四節:編輯數據edit
- 第五節:刪除數據delete
- 第七章 學生管理
- 第一節:建立數據表
- 第二節:數據列表
- 7.2.1 顯示性別
- 7.2.2 顯示創建時間
- 7.2.3 顯示班級名稱
- 7.2.4 顯示輔導員姓名
- 第三節:編輯數據
- 第四節:魔法函數
- 第五節:源碼分析
- 第八章 課程管理
- 第一節:建立數據表
- 第二節:新增課程
- 第三節:編輯課程
- 8.3.1 edit
- 8.3.2 update
- 第九章 代碼重構
- 第一節:add 與 edit
- 第二節:insert 與 update
- 第三節:模板繼承
- 9.3.1 index.html
- 9.3.2 edit.html
- 9.3.3 小結
- 第十章 UML圖
- 第一節:E-R圖回顧
- 第二節:UML圖
- 第十一章 菜單與路由
- 第一節:添加菜單
- 第二節:虛擬主機
- 第三節:定制路由
- 第十二章 開發調試
- 第一節:開啟trace
- 第二節:查看日志
- 第十三章:總結