2015-02-08 89 views
-1

我写了一些代码来超时会话;当空闲不工作时会话超时php

<?php 

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


if (isset($_SESSION['username'])) { 

    echo "<center>Welcome </center>" ; //  echo "<p> </p>"; 
    echo " <center>". $_SESSION['username']. "</center>" ; 
    echo "<br /><center>".$_SESSION["role"]."<br /></center>" ; 

}else{ 

    header("location:login.php"); 

} 

但是,如果会话闲置10秒,会话不会超时。

+0

把'exit;'放在你的重定向之后。 – zerkms 2015-02-08 20:26:54

+0

已添加,但仍然相同。 – suppko 2015-02-08 20:35:28

+0

如果您修改了代码 - 相应地更改了问题。 – zerkms 2015-02-08 20:39:05

回答

1

看起来像你几乎那里。我会试试这个:

<?php 

session_start(); 

$inactive_time = 10; 

if(isset($_SESSION['last_active_time'])){ 

    $time_since_last_active = time() - $_SESSION['last_active_time']; 

    if($time_since_last_active >= $inactive_time){ 
     // The user has been inactive for too long 
     session_destroy(); 
     header('Location: login.php'); 
     exit; 
    }else{ 
     // Set the last active tim 
     $_SESSION['last_active_time'] = time(); 
    } 

}else{ 
    $_SESSION['last_active_time'] = time(); 
} 
+0

mm我尝试了你发布的内容,但它仍然无法正常工作。 – suppko 2015-02-08 20:35:05

+0

适合我的作品 - 你是否等待10秒? – ajtrichards 2015-02-08 20:39:00

+0

是的,我没等。我甚至将$ inactive_time更改为3秒,但仍然没有重定向到login.php – suppko 2015-02-08 20:41:16