国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

session理解

phpmatt / 2051人閱讀

摘要:理解還是那句。。。。而還不是很理解的,谷歌下,要理解這兩個東西其實也不難。。當瀏覽器端禁用時,這個依然會被創(chuàng)建。其實我的理解很簡單不對的地方歡迎指出。。

session理解

還是那句。。。。新手上路。。大神歡迎指點

1.session的概念

其實什么是session?什么是cookie?這些都是些老掉牙的問題了。。而做過相關的開發(fā)的人,基本都知道。。而還不是很理解的,谷歌下,要理解這兩個東西其實也不難。。那這里我就不去探討這個問題了。。

2.cookie與session的關系

說下我的理解吧:

cookie和session的方案雖然分別屬于客戶端和服務端,但是服務端的session的實現對客戶端的cookie有依賴關系的;步驟大概如下:

服務端執(zhí)行Session機制

生成對應而唯一的session_id(通過對這個session_id的解析和處理,服務端可以找到,該session保存的文件;再從文件中提取出session的信息)

服務端會將這個session_id發(fā)送給客戶端

客戶端接受到session_id,以cookie作為保存的容器保存起來

客戶端在每次請求的時候都會帶這個session_id給服務端

服務端自行解析session

注意:session保存信息的手段是多種的:緩存,數據庫,文件等;但是默認是文件形式保存。。。

問題:

禁用了cookie后,session還能使用嗎?

app就真的不可以使用session嗎?

為了探討上面的問題。。我們先看看 session 創(chuàng)建和銷毀的時機。。

3.創(chuàng)建 session和銷毀session的時機

創(chuàng)建session的時候會附帶著創(chuàng)建一個cookie,它的MaxAge為-1,也就是說只能存在于內存中。當瀏覽器端禁用cookie時,這個cookie依然會被創(chuàng)建。

當瀏覽器提交的請求中有jsessionid參數或cookie報頭時,容器不再新建session,而只是找到先前的session進行關聯。這里又分為兩種情況:

1)使用jsessionid。該值若能與現有的session對應,就不創(chuàng)建新的session,否則,仍然創(chuàng)建新的session。

2)使用cookie。該值若能與現有的session對應,也不創(chuàng)建新的session;但若沒有session與之對應(就如上面的重啟服務器之后)容器會根據cookie信息恢復這個與之對應的session,就好像是以前有過一樣。

session何時被銷毀?
當我們關閉瀏覽器,再打開它,連接服務器時,服務器端會分配一個新的session,也就是說會啟動一個新的會話。那么原來的session是不是被銷毀了呢?我做了個小實驗:

創(chuàng)建一個session:

//啟動session的初始化
session_start();
//注冊session變量,并且賦值
$_SESSION["username"] = "hello"
//輸出生成的session_id
echo session_id();

訪問頁面創(chuàng)建session,獲取session_id,關閉瀏覽器;

根據session_id創(chuàng)建session對象

//上面輸出的session_id
$session_id = "qpk6onnn3husvotnke030ftcm4";
session_id($session_id);
session_start();
echo $_SESSION["username"];

結果可以取出 "hello"

由此可以看出:

當瀏覽器關閉時,原session并沒有被銷毀(destory方法沒有執(zhí)行),而是等到timeout到期,才銷毀這個session。關閉瀏覽器只是在客戶端的內存中清除了與原會話相關的cookie,再次打開瀏覽器進行連接時,瀏覽器無法發(fā)送cookie信息,所以服務器會認為是一個新的會話。因此,如果有某些與session關聯的資源想在關閉瀏覽器時就進行清理(如臨時文件等),那么應該發(fā)送特定的請求到服務器端,而不是等到session的自動清理。

4.回歸問題。。

其實我的理解很簡單(不對的地方歡迎指出)。。

只要有session_id就可以找到session。。。

cookie 是保存唯一識別(session_id)的手段;

禁用cookie 或者 本來就不支持cookie,但是通過其他手段,也能實現cookie實現的功能。服務器只要有session_id;還是能找到對應的session的;只是session機制,內部本來是通過cookie自動實現的。。。如果不采取cookie的話,就要自己去邏輯實現。。。感覺有點變味了,但是豬肉變質了,還是豬肉啊。。。具體看自己怎么看。。。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25929.html

相關文章

  • 深入理解flask框架(4):session

    摘要:中的實現是基于。打開源碼的文件,我們可以看到最后的接口類中,主要有兩個函數。這個系列就此完結。 flask中session的實現是基于cookie。打開flask源碼的session.py文件,我們可以看到最后的接口類中,主要有open_session,save_session兩個函數。 class SecureCookieSessionInterface(SessionInterfa...

    PingCAP 評論0 收藏0
  • 深入 Flask 源碼理解 Context

    摘要:主要的作用是將維護的字典中鍵為對應的值定義為。如果沒有,則會將當前到中,同時將加入列表中否則添加。注意清理之后的動作。上述代碼涉及到,它強調必須是一個可調用對象。后期的工作之一是了解。這僅僅是我的個人理解。實際上這是解決多個實例運行的問題。 Flask 中的上下文對象 知乎問題 編程中什么是「Context(上下文)」 已經能夠簡單地說明什么是 Context,它是一個程序需要的外部對...

    ninefive 評論0 收藏0
  • 理解HTTP session原理及應用

    摘要:理解原理及應用一術語在我的經驗里,這個詞被濫用的程度大概僅次于,更加有趣的是與在某些語境下的含義是相同的。其中的作用就是為了解決協(xié)議無狀態(tài)的缺陷所作出的努力。 理解HTTP session原理及應用 一、術語session 在我的經驗里,session這個詞被濫用的程度大概僅次于transaction,更加有趣的是transaction與session在某些語境下的含義是相同的。 ...

    dreamGong 評論0 收藏0
  • 深入理解hibernate的三種狀態(tài)

    摘要:好了,廢話不多說了,相信大家都知道的這三種狀態(tài)的含義,那我們就通過一張圖來開始我們的深入的三種狀態(tài)之旅吧。 原文地址: http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 學過hibernate的人都可能都知道hibernate有三種狀態(tài),transient(瞬時狀態(tài)),persistent(持久化狀態(tài))以及detac...

    Scorpion 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<