PHP每当我用time()调用$ var时值都会改变

时间:2015-02-12 03:05:16

标签: php time session-timeout

PHP 5.4

我希望有start_time& end_time

end_time应该有start_time + 5

问题是每次刷新页面时,时间都会改变

我怎样才能让end_time无法改变?

示例代码:

// Set timeout period in seconds
$_SESSION['inactive_amount'] = 5;
$inactive = $_SESSION['inactive_amount'];

$_SESSION['start_time'] = time();
$start_time = $_SESSION['start_time'];

$_SESSION['end_time'] = $start_time + $inactive;

echo "<pre>", print_r($_SESSION, true), "</pre>";

输出1:

Array
(
    [inactive_amount] => 5
    [start_time] => 1423701080
    [end_time] => 1423701085
)

输出2 [刷新]:

Array
(
    [inactive_amount] => 5
    [start_time] => 1423701098
    [end_time] => 1423701103
)

[end_time]更改,因此永远不会达到使用[start_time] + 5 seconds

设置的初始时间

问题很简单(对于知道的人),我想在处理任何类型的时间时,如何将它存储在某个地方,以便在设置后值不会改变?我这样写的是因为它不仅仅用于会话,我还有多个地方需要比较时间。

*注意:我知道我可以在db中存储start_time + 5值,然后再次检索它以填充var,但是我想这样做没有数据库。

1 个答案:

答案 0 :(得分:2)

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

这将阻止每次刷新页面时更新会话时间。一旦设置,它将不会在每次刷新页面时反复设置为会话变量。如果有效,请告诉我。