0

通常、サイトはユーザーにログインを記憶する選択肢を提供するため、最初のセッション開始時に 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
}

これは正しいです?そうでない場合、セッション期間を処理するよりスマートな方法があるのはなぜですか?

4

1 に答える 1