通常、サイトはユーザーにログインを記憶する選択肢を提供するため、最初のセッション開始時に Cookie の有効期間をゼロまたは X に設定します。
この選択を覚えておくために、$_SESSION var 内にライフタイム値を入れました。しかし、セッションを継続したい場合、セッションが開始される前にこの値を取得することはできません。
そのため、現在、セッションを続行するときに session_set_cookie_params() を呼び出しません。それどころか、セッションの開始時に現在の時刻を保存し、セッションの継続時にそれを確認します。これはコードです (注:これは単純化されたバージョンであり、元のコードには session_register_shutdown() などの他の必要なものがすべて含まれています):
// when I start the session
[...]
session_set_cookie_params($duration); // $duration was set before
session_start();
$_SESSION['starttime'] = time();
$_SESSION['duration'] = $duration;
//-----------------------------------
// when I continue the session
$ok = true;
session_start();
if (isset($_SESSION['starttime']))
{
$elapsed = $_SESSION['starttime']; - time();
$duration = $_SESSION['duration'];
if ($elapsed >= $duration and $duration !== 0)
{
$ok = false;
}
}
else
{
$ok = false;
}
if (! $ok)
{
// destroy the session
}
これは正しいです?そうでない場合、セッション期間を処理するよりスマートな方法があるのはなぜですか?