萬麗華
(江西信息應用職業技術學院,江西南昌330043)
在PHP中淺談Cookie與Session
萬麗華
(江西信息應用職業技術學院,江西南昌330043)
介紹和分析了Cookie和Session兩種瀏覽器的保存方式,并結合PHP討論兩者的應用。
Cookie;Session;PHP;應用
“Cookie”在英語中的意思是“小甜餅或小禮物”,大家知道HTTP協議本身是一種無狀態協議,服務器單單從網絡連接上是無法知道用戶身份的。那么在訪問網站時,它是什么概念呢?它意味著服務器給瀏覽器的“小禮物”,具體可以理解為一張“會員卡”,當你第一次訪問網站時,在你自己的瀏覽器中存放了一張”會員卡”,里面登記了一些信息。憑借此“會員卡”,只要在有效期內使用該瀏覽器再次登錄網站,網站的各個頁面都能識別該“會員卡”,從而達到識別用戶、跟蹤用戶、實現用戶自定義功能。其中域和路徑屬性標識了這個“會員卡”是哪個網站發送給瀏覽器的,同時創建時間和過期時間說明了“會員卡”的有效期,有效期過后,“會員卡”就被自動刪除。
如果不設置過期時間,則表示這個“會員卡”的有效期就只到瀏覽器關閉的時候,此時Cookie被瀏覽器保存在內存中。
如果設置了過期時間,Cookie則被瀏覽器保存在硬盤中,有效期直到過期時間為止。存儲在硬盤的Cookie可以在不同的瀏覽器進程中共享。
在PHP中對Cookie的操作有以下一些內容:
1)設置Cookie
PHP中使用SetCookie函數來設置Cookie,發放“會員卡”,使用全局數組$_COOKIE來保存需要的數據。
setcookie(“name”,“value”);
setcookie(“name”,“value”,time()+24*3600);
需要注意的是,設置的“會員卡”并不是可以立即使用的,而是需要等到下個頁面才可以使用。
2)接收和處理Cookie
echo$_COOKIE[“name”];
3)刪除Cookie
setcookie(“name”);
setcookie(“name”,“”);
setcookie(“name”,“value”,time()-100);
“Cookie”如果理解為瀏覽器保存的一張網站“會員卡”,要讓網站識別的話,只需要出示卡片,那么Session就可以理解為瀏覽器上只保存的“會員卡”“卡號”,要讓網站識別的話,只需要告訴網站“卡號”,網站根據“卡號”查找“會員卡”,從而實現識別用戶的目的,這個“卡號”就是我們所說的Session ID[1]。
這個Session“會員卡”在網站服務器上的保存時間一般是20min,過了期限,“會員卡”會被銷毀。程序員也可以在其銷毀之前另行存儲。
那么瀏覽器端保存“卡號”會有哪些方式呢?
瀏覽器一般提供了兩種保存方式:
1)使用Cookie來保存,這是最常見的方式。服務器通過設置Cookie將“卡號”保留到瀏覽器上,下次訪問相同的網站時,可以用“卡號”去標識身份。但是有很多瀏覽器會禁用Cookie,所以要保存“卡號”,可以使用第二種方法。
2)使用URL附加信息的方法,比如訪問某網站時會有xxx。php SESSIONID=xxx,這個和第一種方式里面不設置Cookie的過期時間是一樣的。
3)還有一種就是通過在表單中增加隱藏域,這個方式其實和第二種是一樣的道理,只不過URL是通過GET方式發送數據,而這種是采用POST方式發送數據,顯然GET方式簡單的多。
在PHP中對Session的操作有以下一些內容:
1)設置Session
但凡需要使用Session,都必須使用函數session_start(),然后可以使用全局數組$_SESSION來保存需要的數據。
session_start();
$_SESSION[“name”]=“value”;
2)接收和處理Session
session_start();
echo$_SESSION[“name”];
3)刪除Session
session_start();
session_unset();
session_destroy();
1)Cookie數據是保存在客戶端“—”瀏覽器上的,Session數據是保存在服務器端。
2)Cookie通過把所有要保存的數據通過HTTP協議的頭部從客戶端傳遞到服務端,又從服務端再傳回到客戶端,所有的數據都存儲在客戶端的瀏覽器里,所以這些Cookie數據可以被訪問到。不僅可以查看Cookie,甚至可以通過類似于Firecookie這樣的插件添加、修改Cookie,所以Cookie的安全性受到了很大的挑戰,只要別人盜走你的”會員卡”,那么你會承受很大損失[2]。
3)Session由于在客戶端保存的是”卡號”,如果采用Cookie方式保存,而Cookie又容易受到攻擊,所以一旦客戶端禁用了Cookie,那么Session就會沒用。所以我們常用的是URL的方式來傳遞”卡號”,因此不是完全依賴Cookie。
4)每個Cookie保存的數據大小不能超過4 K,大部分瀏覽器都限制一個站點保存的cookie數最多20個。
5)Session由于保存在服務器上,會比較占用服務器的性能,如果考慮到減輕服務器負擔的話,可以使用Cookie。
6)一般在使用時,建議將登錄等重要信息存放在Session中,其他信息放在Cookie中。
7)防止header()引發的Cookie與Session錯誤。
[1]柳麗娜.淺淡Session機制與Cookie機制[J].電腦編程技巧與維護,2008(16):28-29.
[2]齊紅心.PHP開發過程中頁面參數傳遞方法分析[J].軟件導刊, 2016(1):23-24.
(編輯:王璐)
Discussion of Cookie and Session in PHP
W an Lihua
(Jiangxi Vocational and Technical College of Information Application,Nanchang Jiangxi330043)
This paper introduces and analyzes two ways of browser reservation,including Cookie and Session,and discusses the application of them in combination with PHP.
Cookie;Session;PHP;application
TP393
A
2095-0748(2016)23-0083-02
10.16525/j.cnki.14-1362/n.2016.23.39
2016-11-29
萬麗華(1981—),女,江西南昌人,碩士,高職講師,研究方向:網站開發,計算機網絡。