搜尋
首頁後端開發php教程如何可靠地管理 PHP 會話 30 分鐘後過期?

How to Reliably Manage PHP Session Expiry After 30 Minutes?

如何管理PHP 會話在30 分鐘後過期

需要將會話保持在特定時間,然後終止它在網絡開發中很常見。 PHP 提供了設定會話逾時的選項,但它們可能不會總是產生可靠的結果。讓我們了解現有 PHP 機制的缺點,並探索可靠的解決方案。

PHP 內建逾時選項的可靠性問題

PHP 提供了兩種設定會話的選項timeouts:

  1. session.gc_maxlifetime:控制PHP 將會話資料視為「垃圾」並啟動清理的秒數。但是,此選項並不可靠,因為垃圾收集過程取決於 session.gc_probability 和 session.gc_divisor 確定的隨機機率。
  2. session.cookie_lifetime:指定發送的 cookie 的生命週期到瀏覽器。但是,此選項只會影響 cookie 的持續時間,不會使會話本身失效。

實作自訂會話逾時機制

建立可靠的會話逾時機制會話逾時,實作您自己的解決方案。這可以透過維護代表上次使用者活動的時間戳來實現。

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // Last request was more than 30 minutes ago
    session_unset(); // Unset $_SESSION variable
    session_destroy(); // Destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // Update last activity timestamp
  1. 檢查會話中是否存在「LAST_ACTIVITY」鍵,並驗證自上次活動以來是否已經過了 30 分鐘。
  2. 如果會話處於非活動狀態超過 30 分鐘,請使用 session_unset() 取消設定所有會話變數並使用銷毀會話session_destroy()。
  3. 定期更新每個請求的「LAST_ACTIVITY」時間戳,以在活動使用期間保持會話處於活動狀態。

因為每次要求更新會話資料都會修改會話檔案的修改日期,垃圾收集器不會過早刪除會話。

為了增加安全性,請考慮定期重新產生會話ID 以緩解會話劫持嘗試:

if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
    // Session started more than 30 minutes ago
    session_regenerate_id(true); // Change session ID and invalidate old one
    $_SESSION['CREATED'] = time(); // Update creation time
}

附加說明

  1. 確保將session.gc_maxlifetime 設定為大於或等於自訂過期時間的值處理程序持續時間(本例中為1800)。
  2. 如果您希望將會話過期基於 30 分鐘的活動,請使用 setcookie(..., time() 60*30) 設定 cookie 過期時間,以保持會話 cookie 處於活動狀態。

以上是如何可靠地管理 PHP 會話 30 分鐘後過期?的詳細內容。更多資訊請關注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

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

熱門文章

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具