セッションを一定時間維持し、その後終了する必要性Web開発ではよくあることです。 PHP にはセッション タイムアウトを設定するためのオプションが用意されていますが、常に信頼できる結果が得られるとは限りません。既存の PHP メカニズムの欠点を理解し、信頼できる解決策を探ってみましょう。
PHP には、セッションを設定するための 2 つのオプションがあります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 }
以上が30 分後の PHP セッションの有効期限を確実に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。