PHP会话生存期总是0


php session lifetime is always 0

我使用这段代码来设置所有页面和登录页面的会话生存时间

session_set_cookie_params(time()+120);
session_start();

当我print_r session_get_cookie_params我得到这个

Array ( [lifetime] => 1441447767 [path] => / [domain] => [secure] => [httponly] => )

但是会话在关闭网页后立即过期,当我再次打开它时,我被重定向到登录页面。那么,设置会话生命周期的正确方法是什么呢?只要用户继续浏览网站,就会持续计算新的生命周期。例如,如果会话生存期为120秒,它不会过期,除非用户关闭了网页,并且在120秒内没有返回,但如果他在这120秒内返回网站,会话将重新开始计算新的120秒。

您需要检查最后一次活动时间,每次有人访问页面时更新:

if(($_SESSION['lastActivity'] + 120) < time()) {
    // timeout, destroy the session.
    session_destroy();
    unset($_SESSION);
    die('Timeout!');
} else {
    $_SESSION['lastActivity'] = time();
}