php中cookie與session的區別點總結
本教程操作環境:windows7系統、7.1版、DELL G3電腦
無論是在系統運維還是 PHP 開發人員的面試中,經常會被問到 Session 和 Cookie 在 PHP 中的區別?下面我們就來總結一下:
Cookie 僅由客戶端生成、管理並使用,PHP 只是發出指令要求客戶端如何生成 Cookie、何時過期等,但是客戶端不一定會按照 PHP 的指令辦事。
Cookie 不是很安全,不法分子可以通過分析本地的 Cookie 進行 Cookie 欺騙。考慮到安全問題,建議將使用者的重要資訊存放在 Session 中,其它不重要但需要保留的資訊可以存放在 Cookie 中。
Session 是使用者進入某個到關閉瀏覽器這段時間的會話,預設以檔案形式存在伺服器磁碟中,所以設定過多的 Session 會影響磁碟的效能,也可以用 Memory 引擎存入 ,因為記憶體引擎讀寫速度快,現在也可以指定用 Redis 來處理 Session,這樣更快,效率更高。
Session 的收回機制是被動的,一般來說,一旦關閉瀏覽器 Session 也就被 PHP 自動回收了,但有時即使設定了過期時間並且關閉瀏覽器也不一定會刪除 Session,比如設定多目錄多層級儲存 Session 時,這時需要通過 PHP 手動刪除 Session。
通常 Cookie 與 Session 是繫結的,即使用者在沒有禁用 Cookie 時,Cookie 一般會儲存 Session ID 及 Session 生存週期,如果使用者刪除 Cookie 一般會退出系統;如果沒有禁用 Cookie 關閉瀏覽器 Session 也會立即失效,要重新登入系統。
Cookie 與 Session 一般應於標識使用者、許可權認證、儲存簡單資料、還有就是利用 Cookie 實現單點登入。
Cookie 儲存的資料在不同的瀏覽器會有不同的限制,一般在同一個域名下,Cookie 變數數量控制在 20 個以內,每個 Cookie 的值大小控制在 4kb 以內。Session 值沒有大小和數量限制,但如果數量過多,會增大伺服器的壓力。另外,Cookie 儲存的內容是字串,而 Session 儲存的資料是物件。
Session 不能區分路徑,同一個使用者在訪問一個網站期間,所有的 Session 在任何一個地方都可以訪問到;而 Cookie 中如果設定了路徑引數,那麼同一個網站中不同路徑下的 Cookie 是不能互相訪問的。
COOKIE和SESSION的區別
(1)儲存位置:Cookie儲存在客戶端瀏覽器中,相對不安全;Session內容所在檔案儲存在伺服器中,一般在根目錄下的tmp資料夾中,相對更安全。
(2)數量和大小限制:Cookie儲存的資料在不同的瀏覽器會有不同的限制,一般在同一個域名下,Cookie變數數量控制在20個以內,每個cookie值的大小控制在4kb以內。session值沒有大小和數量限制,但如果數量過多,會增大伺服器的壓力。
(3)內容區別:cookie儲存的內容是字串,而伺服器中的session儲存的資料是物件。
(4)路徑區別:session不能區分路徑,同一個使用者在訪問一個網站期間,所有的session在任何一個地方都可以訪問到;而cookie中如果設定了路徑引數,那麼同一個網站中不同路徑下的cookie互相是訪問不到的。
內容擴充套件:
1、存放的位置
cookie儲存在客戶端,session儲存在伺服器端的檔案系統//memcache等。
2、安全性
session因為儲存有伺服器端,安全性無疑更高一些。
3、網路傳輸量
cookie通過網路在客戶端與客棧伺服器端傳輸,會佔用一些頻寬;而session儲存在伺服器端,不需要傳輸。
4、儲存時間(生命週期),以20分鐘為例
cookie的生命週期是累計的,從建立時就開始計算,20分鐘後生命週期就結束,即cookie無效;
session的生命週期是間隔的。從建立時開始計時,如果20分鐘內,沒有訪問過session,那麼session會在20分鐘時失效。而如果在20分鐘內的任一時間訪問過session,那麼,session的生命週期將重新開始計算。
5、sessiowww.cppcns.comn和cookie的生效路徑
cookie在預設情況下,cookie只在當前檔案的目錄下生效,一般需要設定setcookie的第四個引數為根目錄,使得整個網站所在頁面都生效;session預設情況下是根目錄下生效(可以通過檢視cookie的PHPSESSID資訊知道,或者通過php.ini檔案裡的session.cookie_path來設定)。
到此這篇關於php中cookiewww.cppcns.com與session的區別點總結的文章就介紹到這了,更多相關php中cookie與session有什麼區別內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!