您好,登錄后才能下訂單哦!
本篇內容主要講解“php中cookie與session的區別是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php中cookie與session的區別是什么”吧!
本教程操作環境:windows7系統、PHP7.1版、DELL G3電腦
無論是在系統運維還是 PHP 開發人員的面試中,經常會被問到 Session 和 Cookie 在 PHP 中的區別?下面我們就來總結一下:
Cookie 僅由客戶端生成、管理并使用,PHP 只是發出指令要求客戶端如何生成 Cookie、何時過期等,但是客戶端不一定會按照 PHP 的指令辦事。
Cookie 不是很安全,不法分子可以通過分析本地的 Cookie 進行 Cookie 欺騙。考慮到安全問題,建議將用戶的重要信息存放在 Session 中,其它不重要但需要保留的信息可以存放在 Cookie 中。
Session 是用戶進入某個網站到關閉瀏覽器這段時間的會話,默認以文件形式存在服務器磁盤中,所以設置過多的 Session 會影響磁盤的性能,也可以用 Memory 引擎存入 MySQL,因為內存引擎讀寫速度快,現在也可以指定用 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 是不能互相訪問的。
(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、session和cookie的生效路徑
cookie在默認情況下,cookie只在當前文件的目錄下生效,一般需要設置setcookie的第四個參數為根目錄,使得整個網站所在頁面都生效;session默認情況下是根目錄下生效(可以通過查看cookie的PHPSESSID信息知道,或者通過php.ini文件里的session.cookie_path來設置)。
到此,相信大家對“php中cookie與session的區別是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。