1

現在、フォームページにセッションを保存しています:

$testingvalue = "セッション テスト";

$_SESSION['testing'] = $testingvalue;

別のページで、値を使用するためにセッションを呼び出しています。

<?php
session_start(); // make sure there is a session

echo $_SESSION['testing']; //prints SESSION TEST???
?>

今、私は

session_destroy();

セッションを破棄します。しかし、私がやりたいのは、2 時間が経過した後にセッションを破棄することです。

それを行う方法と、どこに置くべきかについてのアイデアはありますか?

私はこのようなものを持っています:

 <?php
session_start();

// 2 hours in seconds
$inactive = 7200; 

$session_life = time() - $_session['testing'];

if($session_life > $inactive)
{  
 session_destroy(); 
}

$_session['testing']=time();
    
    echo $_SESSION['testing']; //prints NOTHING?
    ?>

それはうまくいきますか?

2 時間以上非アクティブな場合、これは空白にする必要がありますか?:

echo $_SESSION['testing'];

4

2 に答える 2

6

このようなものが動作するはずです

<?php
// 2 hours in seconds
$inactive = 7200; 
ini_set('session.gc_maxlifetime', $inactive); // set the session max lifetime to 2 hours

session_start();

if (isset($_SESSION['testing']) && (time() - $_SESSION['testing'] > $inactive)) {
    // last request was more than 2 hours ago
    session_unset();     // unset $_SESSION variable for this page
    session_destroy();   // destroy session data
}
$_SESSION['testing'] = time(); // Update session
于 2013-06-18T21:39:58.223 に答える
2

有効期限が切れるには静的な開始時間が必要です。$session_life > $inactive何があっても常に大きくなります。

session_start();

$testingvalue = "SESSION TEST";
$_SESSION['testing'] = $testingvalue;

// 2 hours in seconds
$inactive = 7200;


$_SESSION['expire'] = time() + $inactive; // static expire


if(time() > $_SESSION['expire'])
{  
$_SESSION['testing'] = '';
 session_unset();
 session_destroy(); 
$_SESSION['testing'] = '2 hours expired'; // test message
}

echo $_SESSION['testing'];

またはsession-set-cookie-params

于 2013-06-18T21:40:46.943 に答える