ホームページ > バックエンド開発 > PHPチュートリアル > 30 分間非アクティブになった後に PHP セッションを効果的に期限切れにするにはどうすればよいですか?

30 分間非アクティブになった後に PHP セッションを効果的に期限切れにするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-23 11:23:12
オリジナル
743 人が閲覧しました

How Can I Effectively Expire a PHP Session After 30 Minutes of Inactivity?

30 分後に PHP セッションを期限切れにする

セッションを特定の時間維持し、その後終了するには、カスタム セッション タイムアウトを実装することをお勧めします。このアプローチは、session.gc_maxlifetime や session.cookie_lifetime.

1 などのセッション設定に依存するよりも信頼性が高くなります。 session.gc_maxlifetime:

session.gc_maxlifetime は、セッション データが「ゴミ」とみなされて削除されるまでの時間を決定します。ただし、ガベージ コレクションは散発的に発生するため、セッションの有効期限を確認する方法としては信頼性が低くなります。

2. session.cookie_lifetime:

session.cookie_lifetime は、ブラウザに送信される Cookie の存続期間にのみ影響し、セッション自体には影響しません。セッションを無効にするのはクライアントではなくサーバーです。

推奨される解決策:

最後のアクティビティ時間を追跡するタイムスタンプを維持することで、カスタム セッション タイムアウトを実装します。このタイムスタンプはリクエストごとに更新します。

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
ログイン後にコピー

このメソッドは、アクティビティの 30 分後にセッション データを効果的に期限切れにし、ガベージ コレクターによる早期の削除を防ぎます。

セキュリティを強化するには、定期的に再生成することを検討してください。セッションの固定を防ぐためのセッション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 for the current session and invalidate old session ID
    $_SESSION['CREATED'] = time();  // update creation time
}
ログイン後にコピー

注:

  1. session.gc_maxlifetime を少なくともカスタム有効期限ハンドラーと同じ長さに設定します。
  2. セッションの開始ではなくアクティビティに基づいてセッションを期限切れにする場合は、setcookie を使用して Cookie の有効期限を 30 に設定します。分。

以上が30 分間非アクティブになった後に PHP セッションを効果的に期限切れにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート