PHPでは、セッションは、ユーザーIDの識別やデータ保持などの機能を実現するための一般的なメカニズムです。デフォルトでは、セッションのライフサイクルと有効期限は、サーバーの構成ファイル( php.iniなど)によって制御されますが、セッション_start()の前に関連する設定を介してセッションのライフサイクルをカスタマイズすることもできます。
この記事では、セッションのライフサイクルと有効期限をSession_start() 、および関連する予防策を介してどのように設定するかを詳細に説明します。
セッションのライフサイクルは、2つの部分で構成されています。
クライアントCookieの有効期限:ブラウザが閉じた後もセッションIDが保持されているかどうか。
サーバーセッションデータのストレージ時間:つまり、サーバーに保存されているセッションデータのサバイバルサイクル。
どちらも、あなたが期待するセッションのライフサイクルを達成するために適切にセットアップする必要があります。
session_start()を呼び出す前に、次の2つの関数を使用してセッションライフサイクルを設定できます。
SESSION_SET_COOKIE_PARAMS() :クライアントCookieの有効期限を設定します。
ini_set( 'session.gc_maxlifetime'、秒) :サーバーセッションデータの最大生存時間を設定します。
セッションのライフサイクルを1時間(3600秒)に設定する例は次のとおりです。
<code>&lt;?php //サーバー側のセッションのライフサイクルを1時間に設定しますini_set( 'session.gc_maxlifetime'、3600); //クライアントクッキーのライフサイクルを1時間に設定します
session_set_cookie_params([[
'lifetime' => 3600、
'path' => '/'、
'domain' => 'm66.net'、
'secure' => true、// https(必要に応じて有効)の下でのみクッキーを送信します
'httponly' => true、// jsを無効にしてCookieにアクセスしてセキュリティを改善する
'samesite' => 'lax' // csrf攻撃を防ぐ、オプションの値:lax、strict、none
]);
//セッションを開始します
session_start();
//セッション変数を設定します
$ _Session ['user_id'] = 1234;
?>
</code>
session.gc_maxlifetime :サーバーがセッションデータを保持する時間を制御します。デフォルト値は通常1440秒(24分)です。
session_set_cookie_params()の生涯パラメーターは、クライアントCookieの有効期限を決定します。 0の場合、「ブラウザが閉じて無効です」を意味します。
GC_MAXLIFETIMEが設定されていても、PHPのゴミ収集メカニズムは、要求するたびに期限切れのセッションをクリアしません。クリアの確率は、次の構成項目によって決定されます。
session.gc_probability = 1
session.gc_divisor = 100
セッションのクリーンアップを実行する可能性が1%あることを示します。必要に応じて調整できます。
複数のサブドメイン( API.M66.NET 、 Admin.m66.netなど)を実行している場合は、クロスサブドメイン共有セッションを実現するために、 domainを.m66.netに設定することをお勧めします。
HTTPSを使用する場合は、セッションセキュリティを改善するために、セキュリティおよびHTTPonlyパラメーターを必ず設定してください。
期限切れのセッションファイルを定期的にクリーンアウトして、サーバースペースを積み上げて占有しないようにします。
session_set_cookie_paramsとsession.gc_maxlifetimeを合理的に構成することにより、PHPセッションのライフサイクルを柔軟に制御し、ユーザーステータスをより安全かつ効率的に管理できます。 SESSION_START()を呼び出す前にこれらの設定を作成することは、カスタマイズされたセッション動作を実装する重要なステップです。
関連タグ:
session