php中cookie與session的區(qū)別點(diǎn)總結(jié)
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
無論是在系統(tǒng)運(yùn)維還是 PHP 開發(fā)人員的面試中,經(jīng)常會(huì)被問到 Session 和 Cookie 在 PHP 中的區(qū)別?下面我們就來總結(jié)一下:
Cookie 僅由客戶端生成、管理并使用,PHP 只是發(fā)出指令要求客戶端如何生成 Cookie、何時(shí)過期等,但是客戶端不一定會(huì)按照 PHP 的指令辦事。
Cookie 不是很安全,不法分子可以通過分析本地的 Cookie 進(jìn)行 Cookie 欺騙??紤]到安全問題,建議將用戶的重要信息存放在 Session 中,其它不重要但需要保留的信息可以存放在 Cookie 中。
Session 是用戶進(jìn)入某個(gè)網(wǎng)站到關(guān)閉瀏覽器這段時(shí)間的會(huì)話,默認(rèn)以文件形式存在服務(wù)器磁盤中,所以設(shè)置過多的 Session 會(huì)影響磁盤的性能,也可以用 Memory 引擎存入 MySQL,因?yàn)閮?nèi)存引擎讀寫速度快,現(xiàn)在也可以指定用 Redis 來處理 Session,這樣更快,效率更高。
Session 的收回機(jī)制是被動(dòng)的,一般來說,一旦關(guān)閉瀏覽器 Session 也就被 PHP 自動(dòng)回收了,但有時(shí)即使設(shè)置了過期時(shí)間并且關(guān)閉瀏覽器也不一定會(huì)刪除 Session,比如設(shè)置多目錄多層級(jí)保存 Session 時(shí),這時(shí)需要通過 PHP 腳本手動(dòng)刪除 Session。
通常 Cookie 與 Session 是綁定的,即用戶在沒有禁用 Cookie 時(shí),Cookie 一般會(huì)保存 Session ID 及 Session 生存周期,如果用戶刪除 Cookie 一般會(huì)退出系統(tǒng);如果沒有禁用 Cookie 關(guān)閉瀏覽器 Session 也會(huì)立即失效,要重新登錄系統(tǒng)。
Cookie 與 Session 一般應(yīng)于標(biāo)識(shí)用戶、權(quán)限認(rèn)證、存儲(chǔ)簡(jiǎn)單數(shù)據(jù)、還有就是利用 Cookie 實(shí)現(xiàn)單點(diǎn)登錄。
Cookie 存儲(chǔ)的數(shù)據(jù)在不同的瀏覽器會(huì)有不同的限制,一般在同一個(gè)域名下,Cookie 變量數(shù)量控制在 20 個(gè)以內(nèi),每個(gè) Cookie 的值大小控制在 4kb 以內(nèi)。Session 值沒有大小和數(shù)量限制,但如果數(shù)量過多,會(huì)增大服務(wù)器的壓力。另外,Cookie 保存的內(nèi)容是字符串,而 Session 保存的數(shù)據(jù)是對(duì)象。
Session 不能區(qū)分路徑,同一個(gè)用戶在訪問一個(gè)網(wǎng)站期間,所有的 Session 在任何一個(gè)地方都可以訪問到;而 Cookie 中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的 Cookie 是不能互相訪問的。
COOKIE和SESSION的區(qū)別
(1)存儲(chǔ)位置:Cookie存儲(chǔ)在客戶端瀏覽器中,相對(duì)不安全;Session內(nèi)容所在文件存儲(chǔ)在服務(wù)器中,一般在根目錄下的tmp文件夾中,相對(duì)更安全。
(2)數(shù)量和大小限制:Cookie存儲(chǔ)的數(shù)據(jù)在不同的瀏覽器會(huì)有不同的限制,一般在同一個(gè)域名下,Cookie變量數(shù)量控制在20個(gè)以內(nèi),每個(gè)cookie值的大小控制在4kb以內(nèi)。session值沒有大小和數(shù)量限制,但如果數(shù)量過多,會(huì)增大服務(wù)器的壓力。
(3)內(nèi)容區(qū)別:cookie保存的內(nèi)容是字符串,而服務(wù)器中的session保存的數(shù)據(jù)是對(duì)象。
(4)路徑區(qū)別:session不能區(qū)分路徑,同一個(gè)用戶在訪問一個(gè)網(wǎng)站期間,所有的session在任何一個(gè)地方都可以訪問到;而cookie中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的cookie互相是訪問不到的。
內(nèi)容擴(kuò)展:
1、存放的位置
cookie保存在客戶端,session保存在服務(wù)器端的文件系統(tǒng)/數(shù)據(jù)庫(kù)/memcache等。
2、安全性
session因?yàn)楸4嬗蟹?wù)器端,安全性無疑更高一些。
3、網(wǎng)絡(luò)傳輸量
cookie通過網(wǎng)絡(luò)在客戶端與服務(wù)器端傳輸,會(huì)占用一些帶寬;而session保存在服務(wù)器端,不需要傳輸。
4、保存時(shí)間(生命周期),以20分鐘為例
cookie的生命周期是累計(jì)的,從創(chuàng)建時(shí)就開始計(jì)算,20分鐘后生命周期就結(jié)束,即cookie無效;
session的生命周期是間隔的。從創(chuàng)建時(shí)開始計(jì)時(shí),如果20分鐘內(nèi),沒有訪問過session,那么session會(huì)在20分鐘時(shí)失效。而如果在20分鐘內(nèi)的任一時(shí)間訪問過session,那么,session的生命周期將重新開始計(jì)算。
5、session和cookie的生效路徑
cookie在默認(rèn)情況下,cookie只在當(dāng)前文件的目錄下生效,一般需要設(shè)置setcookie的第四個(gè)參數(shù)為根目錄,使得整個(gè)網(wǎng)站所在頁(yè)面都生效;session默認(rèn)情況下是根目錄下生效(可以通過查看cookie的PHPSESSID信息知道,或者通過php.ini文件里的session.cookie_path來設(shè)置)。
到此這篇關(guān)于php中cookie與session的區(qū)別點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)php中cookie與session有什么區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP常見字符串處理函數(shù)用法示例【轉(zhuǎn)換,轉(zhuǎn)義,截取,比較,查找,反轉(zhuǎn),切割】
這篇文章主要介紹了PHP常見字符串處理函數(shù)用法,結(jié)合實(shí)例形式分析了php針對(duì)字符串的大小寫轉(zhuǎn)換、轉(zhuǎn)義、截取、比較、查找、反轉(zhuǎn)、切割等操作,需要的朋友可以參考下2016-12-12thinkphp在模型中自動(dòng)完成session賦值示例代碼
今天在開發(fā)中遇到自動(dòng)完成中需要獲取session值然后自動(dòng)賦值的功能,還不錯(cuò),下面與大家分享下代碼2014-09-09PHP使用GETDATE獲取當(dāng)前日期時(shí)間作為一個(gè)關(guān)聯(lián)數(shù)組的方法
這篇文章主要介紹了PHP使用GETDATE獲取當(dāng)前日期時(shí)間作為一個(gè)關(guān)聯(lián)數(shù)組的方法,實(shí)例分析了php中GETDATE函數(shù)使用技巧,需要的朋友可以參考下2015-03-03php實(shí)現(xiàn)遍歷多維數(shù)組的方法
這篇文章主要介紹了php實(shí)現(xiàn)遍歷多維數(shù)組的方法,涉及php針對(duì)多維數(shù)組的遍歷與遞歸操作實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11PHP編程之微信公眾平臺(tái)企業(yè)號(hào)驗(yàn)證接口示例【回調(diào)操作】
這篇文章主要介紹了PHP編程之微信公眾平臺(tái)企業(yè)號(hào)驗(yàn)證接口,是通過回調(diào)操作實(shí)現(xiàn)的企業(yè)號(hào)驗(yàn)證功能接口,需要的朋友可以參考下2017-08-08淺談PHP設(shè)計(jì)模式之對(duì)象池模式Pool
對(duì)象池模式是一種提前準(zhǔn)備了一組已經(jīng)初始化了的對(duì)象『池』而不是按需創(chuàng)建或者銷毀的創(chuàng)建型設(shè)計(jì)模式。對(duì)象池客戶端會(huì)向?qū)ο蟪刂姓?qǐng)求一個(gè)對(duì)象,然后使用這個(gè)返回的對(duì)象執(zhí)行相關(guān)操作。當(dāng)客戶端使用完畢,它將把這個(gè)特定類型的工廠對(duì)象返回給對(duì)象池,而不是銷毀掉這個(gè)對(duì)象。2021-05-05php+ajax簡(jiǎn)單實(shí)現(xiàn)全選刪除的方法
這篇文章主要介紹了php+ajax簡(jiǎn)單實(shí)現(xiàn)全選刪除的方法,結(jié)合實(shí)例形式分析了html+js前臺(tái)全選及通過ajax與后臺(tái)php交互實(shí)現(xiàn)批量刪除的具體操作步驟與相關(guān)技巧,需要的朋友可以參考下2016-12-12