2012-03-22 10 views
2

時間を言うと、後で破棄するPHPセッション変数を設定できますか?のは、私は2つの変数は、PHPでセッションの有効期間を設定しました

$_SESSION["loged"]; 
$_SESSION["user"]; 

を持っていると私は彼らが後にまだそこになりたいとしましょうように...

を私は、Webを探していたが、私は非常に異なる意見やそれらの非がmuch.Thankあなたを助けることがわかりましたブラウザをもう2時間閉じます。あなたがの寿命を制御したい場合は

<?php 
session_start(); 

if (!$_SESSION['created_at']) { 
    $_SESSION['created_at']=time(); 
} 

$age=time()-$_SESSION['created_at']; 

if ($age>10) { 
    session_destroy(); 
} 

echo $age; 
?> 
+1

http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutesの可能重複 – summea

答えて

0

あなたは、セッションが作成された時刻を保持しているセッション変数を設定することができます特定のセッション変数を使用するには、独自のタイムアウトチェックをロールバックする必要があります。そのための最良の方法は、特定の変数の有効期間を指定できる関数をライブラリに追加することです。これにより、両方の情報がセッションに配置された配列に格納されます。次に、共通のコードで、その配列をループし、unset()すべてのセッション変数が期限切れになります。セッション自体が、使用したい最高値の間続くことができることを確認してください。

PHPセッション自体には、生涯価値がありません。彼らはセッションを切るガベージコレクタを持っています。 session.gc_maxlifetimeの設定は、ガベージコレクタがセッションを削除する最大経過日数です。この最大経過時間は、最後にアクセスされたときに作成されたものではないことに注意してください。

しかし、session.gc_probabilitysession.gc_divisorも一緒にPHPにガベージコレクタを実行する頻度を教えています。通常の設定では、セッション開始100回ごとに約1がガベージコレクタを実行します。しかし、これは、ボリュームが非常に低いサイトでは、ガベージコレクタが何時間も実行されない可能性があることを意味します。この目に見える効果は、セッションがsession.gc_maxlifetimeの設定を超えて最後のように見えるということです。

0

:セッションは10秒後に破壊する。この例では

0

一部のユーザーは

ini_set('session.gc_maxlifetime') 

すなわちiniファイル の設定を使用して、これを変更することもできますが、これは間違ったアプローチです! PHPデプロイメント全体の設定を変更します。これは実用的で危険なので、このような単純なケースには使用しないでください。言うまでもなく、ほとんどの共有ホスティングプランでは、変更がini_setを無効にするのは、システム上のすべてのユーザーに影響するためです。

代わりに、セッションの有効期限を手動で処理する定型コードをいくつか示します。

//最初

session_start(); 
    $date = new DateTime(); 
    $ts = $date->getTimestamp(); 
    if($ts - $_SESSION["timestamp"]) > 60*60) { 
    session_destroy(); 
    //log out!} 
    else{ 
    $_SESSION["timestamp"] = $ts; 
    } 
関連する問題