1. 程式人生 > >Session與Cookie的區別與聯系

Session與Cookie的區別與聯系

系統 數據 如果 多層 刪除 默認 重新 sqli nbsp

描述兩個事情的不同,一般先從概念入手,然後分析他們是怎麽生成、怎麽使用以及怎麽消亡的:

1、Cookie僅由客戶端生成、管理並使用,PHP只是發出指令要求客戶端如何生成Cookie、何時過期等,但是客戶端不一定會按照PHP的指令辦事。

2、如果沒有設置Cookie過期時間,Cookie會一直以文件或SQLit等DB形式存在客戶端磁盤。

3、Session是用戶進入某個網站到關閉瀏覽器這段時間的會話,默認以文件形式存在服務器磁盤,所以設置過多的Session會影響磁盤IO,也可以用Memory引擎存入MySQL,因為內存引擎讀寫速度快,現在也可以指定用Redis來處理Session,這樣更快,效率更高。

4、Session的收回機制是被動的,如果設置了生存周期,一般來說,一旦關閉瀏覽器Session也就被PHP自動回收了,但有時即使設置了過期時間並且關閉瀏覽器並不一定會刪除Session,比如設置多目錄多層級保存Session時,這時需要通過PHP腳本手動刪除Session。

5、通常Cookie與Session是綁定的,即用戶在沒有禁用Cookie時,Cookie一般會保存sessionID及Session生存周期,如果用戶刪除Cookie一般會退出系統;如果沒有禁用Cookie關閉瀏覽器Session也會立即失效,要重新登錄系統。

6、Cookie與Session一般應於標識用戶、權限認證、存儲簡單數據、還有就是利用P3P實現Cookie跨域單點登錄(SSO:Single Sign On)。

Session與Cookie的區別與聯系