0

ログインシステムを備えたphpのWebサイトがあります。Web サイトが非アクティブな場合、10 分後にユーザーをログアウトしたいと思います。これを行うには、次のコードを使用します。

session_start();
// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['start'];
   if($session_life > $inactive) { 
     session_destroy(); 
     header("Location: index.php"); 
   }
}
$_SESSION['timeout'] = time();

ただし、Web サイトを実行してページを更新すると、ログアウトされ、「600 秒」が経過する前にページが「index.php」にリダイレクトされます。

ここで何が問題になっている可能性があり、ページが非アクティブであることをどのように知ることができますか?

どうもありがとうございました。

4

2 に答える 2

0

どこで定義しました$_SESSION['start' ]か? 私はこれをテストします:

$session_life = time() - $_SESSION['start'];
echo $session_life ,' - ', $_SESSION['timeout'];
die();

と の両方が同じ値$session_life$_SESSION['timeout']持っているので、問題はどちらの値を取る$_SESSION['start']かです。

于 2013-09-07T23:08:18.237 に答える
0
session_start();

// set timeout period in seconds
$session_timeout = 600;

if (!isset($_SESSION['last_visit'])) { $_SESSION['last_visit'] = time(); } // I like brackets!

if((time() - $_SESSION['last_visit']) > $session_timeout) { 
  session_destroy(); 
  header("Location: index.php"); // think about user feedback, "your session timed out" ... index.php?action=session_timeout
  exit; // <= IMPORTANT !!!
}


$_SESSION['last_visit'] = time();
于 2013-09-07T23:09:30.193 に答える