ホームページ >バックエンド開発 >PHPチュートリアル >30 分の PHP セッション有効期限を確実に実装するにはどうすればよいですか?

30 分の PHP セッション有効期限を確実に実装するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-20 11:41:08750ブラウズ

How Can I Reliably Implement a 30-Minute PHP Session Expiration?

30 分後の PHP セッション有効期限の実装

問題ステートメント:

終了する前に 30 分間アクティブなセッションを維持する

答え:

PHP の組み込みセッション設定 (session.gc_maxlifetime、session.cookie_lifetime など) のみに依存すると、信頼性の高いセッション有効期限が保証されない可能性があります。代わりに、カスタムの有効期限メカニズムを実装することをお勧めします。

session.gc_maxlifetime:

  • セッション データが「ガベージ」と見なされ対象となるまでの間隔を決定します。
  • ただし、セッションが開始されるたびにガベージ コレクターが実行されるとは限りません。データ削除に遅延が生じる可能性があります。
  • さらに、デフォルトのセッション ハンドラーでは、ファイル変更のタイムスタンプに基づいてセッション データが削除される可能性があり、不整合が発生します。

session。 cookie_lifetime:

  • の有効期限を制御します。ブラウザのセッション Cookie ですが、サーバー側のセッションの有効性に直接影響しません。
  • この値をゼロに設定すると、ブラウザの終了時に期限切れになる真のセッション Cookie が作成されます。

カスタム有効期限ハンドラー:

信頼性の高いセッション有効期限を確保するには、ユーザー アクティビティを追跡するためのタイムスタンプ。

コード:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // Session inactive for over 30 minutes
    session_unset(); // Delete session data
    session_destroy(); // Terminate session
}
$_SESSION['LAST_ACTIVITY'] = time(); // Update timestamp

追加の考慮事項:

  • セッションを設定します。 gc_maxlifetime をカスタム有効期限間隔以上の値に設定します (例: 1800 秒)。
  • (開始時間ではなく) アクティビティ時間に基づいてセッションを期限切れにするには、setcookie() を使用して、Cookie の有効期限を最後のリクエストから 30 分後に設定します。

以上が30 分の PHP セッション有効期限を確実に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。