需要將會話保持在特定時間,然後終止它在網絡開發中很常見。 PHP 提供了設定會話逾時的選項,但它們可能不會總是產生可靠的結果。讓我們了解現有 PHP 機制的缺點,並探索可靠的解決方案。
PHP 提供了兩種設定會話的選項timeouts:
建立可靠的會話逾時機制會話逾時,實作您自己的解決方案。這可以透過維護代表上次使用者活動的時間戳來實現。
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
因為每次要求更新會話資料都會修改會話檔案的修改日期,垃圾收集器不會過早刪除會話。
為了增加安全性,請考慮定期重新產生會話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 }
以上是如何可靠地管理 PHP 會話 30 分鐘後過期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!