1
2
3
4
5
6
7
8
9
10
11

Session及其和Cookie的區别

發(fā)布時間:2017-09-26 06:00   發(fā)布人:毛書朋   浏覽次數:6822

Session及其和Cookie的區别

關聯課件: 7子項目七 - Session及其和Cookie的區别(點擊在線預覽)


7.3.1.2   Session機制的原理及使用

       Session存儲于服務器端(默認以文件方式存儲),根據客戶端提供的session id得到用戶的文件,取得變量的值,session id可以使用客戶端的Cookie或者訪問的URL的附加數據傳送給服務器,然後(hòu)服務器讀Session的目錄。也就是說,session id是取得存儲在服務上Session變量的身份證。如果配置文件“php.ini”中沒(méi)有設置“session.auto_start=1”,那麼(me)要使用Session就必須先運行代碼session_start();運行的時候,就在服務器上産生了一個session文件,随之也産生了與之惟一對(duì)應的一個session id,定義session變量以一定形式存儲在剛才産生的session文件中。通過(guò)session id,可以取出定義的變量。

      下面(miàn)通過(guò)一個實例來學(xué)習一下Session的使用。

      把文件“7-1.php”、“7-1action.php”、“7-1action-check.php”中的代碼做一些改動。

      1)“7-1.php”中的執行代碼無需變化,詳細請查看代碼“7-2action.php”。

      2)“7-1action.php”中的執行代碼去掉:

setcookie("user_name", $_POST[user_name]);

setcookie("user_pw", $_POST[user_pw]);

     增加代碼:

$_SESSION["user_name"]=$_POST["user_name"];

$_SESSION["user_pw"]=$_POST["user_pw"];

     并把做下列替換:

將(jiāng)"$_COOKIE["user_name"]"替換成(chéng)"$_SESSION["user_name"]";

將(jiāng)"$_COOKIE["user_pw"]"替換成(chéng)"$_SESSION["user_pw"]"。

     詳細請查看代碼“7-2action.php”。

     3)“7-2action-check.php”中執行代碼做如下替換:

將(jiāng)"$_COOKIE["user_name"]"替換成(chéng)"$_SESSION["user_name"]";

將(jiāng)"$_COOKIE["user_pw"]"替換成(chéng)"$_SESSION["user_pw"]"。

    詳細請查看代碼“7-2action-check.php”。

    其運行的結果如圖7-5所示。

7-5.1.jpg

(a)程序7-2.php的運行結果

7-5.2.jpg

(b)程序7-4 action.php的運行結果

7-5.3.jpg

(c)  程序7-2action-check.php的運行結果

不難發(fā)現,注冊Session的方法爲:$_SESSION["Session_name"]=值。


      7.3.1.3 Cookie與Session的比較 

      1. 存儲機制。

     Cookie是一種(zhǒng)在遠程浏覽器端存儲數據并以此來跟蹤和識别用戶的機制,而Session是存儲于服務器端(默認以文件方式存儲session)的。

      2. 生效條件

     Cookie的生效與浏覽器端設置有關,如果浏覽器端禁用了Cookie,那麼(me)它就不能(néng)生效了。Session的生效與服務器端的配置有關,如果“php.ini”中沒(méi)有設置“session.auto_start=1”,那麼(me)要使用Session就必須先運行代碼session_start()。

     3. 注冊方法

     Cookie的注冊方法爲:setcookie("cookie_name", "值");Session的注冊方法爲:$_SESSION ["Session_name"]=值。

     4. 生效範圍

     Cookie的生效範圍爲注冊後(hòu)的所有頁,Session的生效範圍爲注冊起(qǐ)的所有頁。

     值得注意的是,PHP中的Session在默認情況下是使用客戶端的Cookie來保存session id的,所以當客戶端的Cookie出現問題的時候就會影響Session了。但是,session不一定必須依賴Cookie,這(zhè)也是Session相比Cookie的高明之處。當客戶端的Cookie被禁用或出現問題時,PHP會自動把session id附着在URL附加數據中,這(zhè)樣再通過(guò)session id就能(néng)跨頁使用Session變量了。





  • 姜瑞祥 2018-01-07 17:28:12
    session其實指的就是訪問者從到達某個特定主頁到離開(kāi)爲止的那段時間。 Session其實是利用Cookie進(jìn)行信息處理的,當用戶首先進(jìn)行了請求後(hòu),服務端就在用戶浏覽器上創建了一個Cookie,當這(zhè)個Session結束時,其實就是意味着這(zhè)個Cookie就過(guò)期了。
  • 姜瑞祥 2018-01-07 17:28:32
    cookie和session的共同之處在于:cookie和session都(dōu)是用來跟蹤浏覽器用戶身份的會話方式。
  • 姜瑞祥 2018-01-07 17:29:07
    cookie 和session的區别是:cookie數據保存在客戶端,session數據保存在服務器端。 簡單的說,當你登錄一個網站的時候,
  • 姜瑞祥 2018-01-07 17:29:42
    如果web服務器端使用的是session,那麼(me)所有的數據都(dōu)保存在服務器上, 如果浏覽器使用的是cookie,那麼(me)所有的數據都(dōu)保存在浏覽器端。
  • 高成(chéng) 2018-01-09 15:44:48
    頁面(miàn)用session好(hǎo)還(hái)是cookie好(hǎo)呢
  • 張燦立 2018-01-09 16:12:03
    Cookie的生效範圍爲注冊後(hòu)的所有頁,Session的生效範圍爲注冊起(qǐ)的所有頁.
  • 孫永偉 2018-01-10 18:53:34
    浏覽器用COOKIE是不是比較好(hǎo)?