程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 淺析PHP中cookie與session技術

淺析PHP中cookie與session技術

編輯:關於PHP編程

淺析PHP中cookie與session技術


1.cookie是什麼?

cookie指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。

通俗來理解就是,你去一個專賣店或者超市買東西,然後店裡給你辦一張會員卡,以後你的身份和購買信息都存在這個卡裡,而這個卡放你身上。之後每次去買東西的時候只需要刷卡就可以了,不用再登記或者記錄其他的信息。

然後將這段話映射了web上,超市結賬台就是服務器端,而你自己就是客戶端,你身上所帶的卡也就是存在客戶端中的cookie文件,裡面記錄了你的帳號密碼等信息。

不過要注意的一點,cookie在第二次使用的時候才能夠生效,也就是說你在超市第一次買東西,人家會給你辦卡,你以後來買就可以刷卡了,但是第一次買之前,超市並沒有你的任何信息,所以你第一次根本就沒有卡。網站也一樣,第一次登錄某網站,當然要輸入帳號密碼等信息,然後才能生成cookie存在本地,以便下一次使用。

同時,cookie也有自己的有效期,過了期以後就失效了,本地的cookie文件會被自動刪除。需要再次登錄,輸入帳號密碼,然後生成新的cookie。這樣做的主要目的還是為了安全考慮。

2.cookie機制圖解。

\

3.cookie使用方法。

(1)設置cookie

bool setcookie ( string $name,$value,$expire,$path,$domain,$secure,$httponly  
例如:

setcookie("username","user",0,"/");
setcookie("username","user",time()+60*60,"/");

每個參數的用法就不作說明了。這裡重點解析一下上面兩中設置cookie方式中的時間和路徑。

第一個當中的時間放了個0進去,難道代表生存時間為0.明顯不可能,它有著特殊的意義,表示cookie的有效期隨著浏覽器的關閉而結束。他們的路徑中都放了個"/"。這個就代表在這個域名下的所有contentpath都可以訪問cookie,也就是說這個網站下的所有頁面都可以追蹤這個cookie。

(2)刪除cookie

setcookie("username","",time()-3600,"/");
和設置cookie一個東西,就是沒有了cookie的值,時間比當前時間還早,然後不就過期了。

(3)查看cookie

print_r($_COOKIE);
這家伙大家肯定都懂,就當浪費一下眼神。

----------------------------------------------------------------------------------

-----------------------------我是分割線-------------------------------------------

----------------------------------------------------------------------------------

1.session是什麼?

Session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。

session的工作原理(摘於百度) (1)當一個session第一次被啟用時,一個唯一的標識被存儲於本地的cookie中。 (2)首先使用session_start()函數,PHP從session倉庫中加載已經存儲的session變量。 (3)當執行PHP腳本時,通過使用session_register()函數注冊session變量。 (4)當PHP腳本執行結束時,未被銷毀的session變量會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次浏覽網頁時可以加載使用。
其實通俗來講的話,就是你去超市買東西,辦的會員卡記錄了你的信息,但是會員卡並不是保存在你這裡,而是已數據的方式存在超市的系統中,一旦注冊之後可以直接使用。你需要的時候,直接可以使用。但是你一旦離開超市,那個會員卡也就失去了效用直到你的下一次購買。同時,這個會員卡的唯一標識也就是你自己,其他任何人都沒有辦法使用你的會員卡。直接對號入座就很好理解了。
session和cookie的一大不同點就是,session注冊之後直接使用,也就是第一次購買就可以使用,而cookie是經過第一次購買之後才將信息存入會員卡,然後第二次開始使用。

2.session機制圖解。

\

3.session使用方法。

(1)設置session

session_start();

$_SESSION['username']="user";

每一次在使用session之前都需要進行開啟session,就當是通常進門都先需要開門一樣。而在設置session時和對變量進行賦值沒有多大的區別,其實$_SESSION本身就是一個變量。

(2)刪除session

這個相對步驟就多了點,而不是cookie裡面一句話搞定。

//開啟session
session_start();

//注銷session
session_unset();

//銷毀session
session_destroy();

//同時銷毀本地cookie中的sessionid
setcookie(session_name(),"",time()-3600,"/");
(3)查看session

print_r($_SESSION);

1.cookie與session優缺點。

cookie本身是存放在客戶端中,僅占用幾kb的內存大小。每次登錄網站的時候都會帶上本地的cookie進行驗證,省去了麻煩的重復輸入。但是安全性不是很高,畢竟是存放在本地的文件,雖然都是進行加密了的,一旦電腦數據被盜取,cookie就很有可能會被獲取。

session存放在服務器中,占中內存雖小,但是用戶基數夠大的情況下,會對服務器造成很大的負荷。但是,數據放在服務器上,總歸風險降低了許多。雖說沒有不透風的牆,不過風也是可以很小很小的,這比喻。。。有同學可能疑問,session使用時,會有sessionid存在本地,一旦獲取能否登錄。答案當然是否定的,因為每次的id都是不一樣的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved