2009-03-07 15 views

答えて

2

は、私は2つの選択肢があると思いませんどちらも素晴らしいですが、ここで彼らがあります。

1)ファイルシステムにアクセスできる場合は、セッションファイルの作成タイムスタンプを確認できます。

2)作成時間をセッションに保存します。

session_start(); 
if(! isset($_SESSION['generated'])) { 
    $_SESSION['generated'] = time(); 
} 
+0

あなたの例は、すべての要求の値を上書きします。 – Gumbo

+0

あなたはそうです、私は実装ではなくアイデアを実証していました。 –

2

あなたは、単にセッションはあなたがセッションが初期化された時間を格納し、その値を返すことができますセッション

6

で作成されたタイムスタンプ格納することができ:

session_start(); 
if (!isset($_SESSION['CREATED'])) { 
    $_SESSION['CREATED'] = time(); 
} 

そして、それを取得するために任意のセッションからの情報:

function getSessionLifetime($sid) 
{ 
    $oldSid = session_id(); 
    if ($oldSid) { 
     session_write_close(); 
    } 
    session_id($sid); 
    session_start(); 
    if (!isset($_SESSION['CREATED'])) { 
     return false; 
    } 
    $created = $_SESSION['CREATED']; 
    session_write_close(); 
    if ($oldSid) { 
     session_id($oldSid); 
     session_start(); 
    } 
    return time() - $created; 
} 
+0

セッションの生涯を返さないため、あなたのコードは私に匂いがする!作成された時刻を返すだけですが、メソッドの名前はgetSessionLifetime()です。メソッドの名前をgetSessionStartTime()に変更するか、実際の経過時間を計算するようにメソッドを変更する必要があります。 – RibaldEddie

+0

あなたは正しいです、ありがとう。 – Gumbo

+0

また、falseを返すことを心配しないでください。セッションがゼロ時間単位の間生存しているので、セッションの有効期間を計算する場合はゼロを返します。セッションの開始時間を取得してセッションが新しい場合は、time()を戻します。 – RibaldEddie

関連する問題