php 登录会话超时错误

php login session timeout error

我正在创建一个登录脚本,当用户登录时,他将能够在系统注销前停留 3 小时。

以下是我的login.php

            ....
            $_SESSION['dgUserLoggedIn'] = true;
            $_SESSION['timeout'] = time();
            ....

登录-check.php 位于需要验证的每个页面的顶部:

function isLoginSessionExpired() {
    $login_session_duration = 10800; 
    $current_time = time(); 
    if(isset($_SESSION['timeout']) and isset($_SESSION['dgUserLoggedIn'])){  
        if(((time() - $_SESSION['timeout']) > $login_session_duration)){ 
            session_regenerate_id(true);    // change session ID for the current session and invalidate old session ID
            $_SESSION['timeout'] = time();  // update creation time
            return true; 
        } 
    }
    return false;
}
if(isset($_SESSION["dgUserLoggedIn"])) {
    if(isLoginSessionExpired()) {
        header("Location: /core/logout.php");
    }
}

使用上面的代码,用户在大约 30 分钟后自动注销,我如何确保用户可以保持登录状态 3 小时,并且每次页面刷新或访问时间都会自动更新。

下面是我的session-setup.php

// **PREVENTING SESSION HIJACKING**
// Prevents javascript XSS attacks aimed to steal the session ID
ini_set('session.cookie_httponly', 1);

// Adds entropy into the randomization of the session ID, as PHP's random number
// generator has some known flaws
ini_set('session.entropy_file', '/dev/urandom');

// Uses a strong hash
ini_set('session.hash_function', 'whirlpool');

// **PREVENTING SESSION FIXATION**
// Session ID cannot be passed through URLs
ini_set('session.use_only_cookies', 1);

// server should keep session data for AT LEAST 1 hour
ini_set('session.gc_maxlifetime', 3600);

// each client should remember their session id for EXACTLY 1 hour
session_set_cookie_params(3600);

// Uses a secure connection (HTTPS) if possible
ini_set('session.cookie_secure', 1);

session_start();

您检查过 php.ini 文件中 session.gc_maxlifetime 的值了吗?我想这就是导致问题的原因

会话默认超时为 24 分钟(1440 秒)。 请检查 PHP sessions default timeout

首先检查服务器上的默认会话超时设置并在代码中添加以下行。我希望它对你有用

session_set_cookie_params(10800);

您也可以尝试使用 ini_set:

在运行时更改值
ini_set('session.gc_maxlifetime', '10800');

您可以在 php.ini 文件中更改此行。

session.gc_maxlifetime = 1440

更新:好像是可以的,所以我更正了

php_value

session.gc_maxlifetime = 10800

希望对您有所帮助