搜尋
首頁後端開發php教程php之session和cookie總結分享

php之session和cookie總結分享

Mar 12, 2018 am 11:48 AM
cookiephpsession

本文主要和大家分享php之session和cookie總結,希望能幫助大家。

1.cookie與session的關係
cookie和session的方案雖然分別屬於客戶端和服務端,但是服務端的session的實現對客戶端的cookie有依賴關係的;步驟大概如下:
1.服務端執行Session機制
2.產生對應而唯一的session_id(透過對這個session_id的解析和處理,服務端可以找到,該session保存的檔案;再從檔案中提取出session的信息)

3.服務端會將這個session_id發送給客戶端
客戶端接受到session_id,以cookie作為保存的容器保存起來 
4.客戶端在每次請求的時候都會帶這個session_id給服務端 
服務端自行解析session

注意:session保存資訊的手段是多種的:緩存,資料庫,檔案等;但是預設是檔案形式保存。 。 。

2.創建 session和銷毀session的時機
創建session的時候會附帶創建一個cookie,它的MaxAge為-1,也就是說只能存在於內存中。當瀏覽器端停用cookie時,這個cookie依然會被創建。
當瀏覽器提交的請求中有jsessionid參數或cookie標頭時,容器不再新建session,而只是找到先前的session進行關聯。這裡又分為兩種情況:
1)使用jsessionid。該值若能與現有的session對應,就不會建立新的session,否則,仍會建立新的session。
2)使用cookie。該值若能與現有的session對應,也不創建新的session;但若沒有session與之對應(就如上面的重啟伺服器之後)容器會根據cookie資訊恢復這個與之對應的session,就好像是以前有過一樣。
3.session何時被銷毀?

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

建立一個session:

session_start();//註冊session變量,並且賦值$_SESSION["username"] = "hello"//輸出生成的session_idecho session_id();

 訪問頁面建立session,取得session_id,關閉瀏覽器;

根據session_id建立session物件

$session_id = "qpk6onnn3husvotnke030ftcm4";
session_id($session_id);
session_start();
echo $_SESSION["username"];  //结果取出session

所以

#根據session_id建立session物件

rrreee

所以

當瀏覽器關閉時,原session並沒有被銷毀(destory方法沒有執行),而是等到timeout到期,才銷毀這個session。關閉瀏覽器只是在客戶端的記憶體中清除了與原始會話相關的cookie,再次開啟瀏覽器進行連線時,瀏覽器無法傳送cookie訊息,所以伺服器會視為一個新的會話。因此,如果有某些與session關聯的資源想在關閉瀏覽器時就進行清理(如臨時檔案等),那麼應該發送特定的請求到伺服器端,而不是等到session的自動清理。 相關推薦:

php實現會員登陸註冊頁有html加Session和Cookie

實作PHP中session和cookie資料傳值函數

######php學習之session和cookie的區別#######

以上是php之session和cookie總結分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
高流量網站的PHP性能調整高流量網站的PHP性能調整May 14, 2025 am 12:13 AM

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

PHP中的依賴注入:初學者的代碼示例PHP中的依賴注入:初學者的代碼示例May 14, 2025 am 12:08 AM

你應該關心DependencyInjection(DI),因為它能讓你的代碼更清晰、更易維護。 1)DI通過解耦類,使其更模塊化,2)提高了測試的便捷性和代碼的靈活性,3)使用DI容器可以管理複雜的依賴關係,但要注意性能影響和循環依賴問題,4)最佳實踐是依賴於抽象接口,實現鬆散耦合。

PHP性能:是否可以優化應用程序?PHP性能:是否可以優化應用程序?May 14, 2025 am 12:04 AM

是的,優化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)優化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,並避免使用

PHP性能優化:最終指南PHP性能優化:最終指南May 14, 2025 am 12:02 AM

theKeyStrategiestosigantificallyBoostPhpaPplicationPerformenCeare:1)UseOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)優化AtabaseInteractionswithPreparedStateTementStatementStatementAndProperIndexing,3)配置

PHP依賴注入容器:快速啟動PHP依賴注入容器:快速啟動May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP中的依賴注入與服務定位器PHP中的依賴注入與服務定位器May 13, 2025 am 12:10 AM

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

PHP性能優化策略。PHP性能優化策略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP電子郵件驗證:確保正確發送電子郵件PHP電子郵件驗證:確保正確發送電子郵件May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!