PHP: 如何防止会话在用户仍处于登录状态时过期

PHP: How to prevent session from expiring while user is still logged in

我是 PHP 的新手,希望有人能帮助我。

我目前使用以下方法创建会话/cookie 并在会话过期或用户未登录时将用户重定向到登录页面。这包括在内在网站的所有页面上。

到目前为止,这似乎按预期工作。但是,当我在较短的生命周期(例如 2 分钟)内对此进行测试时,它还会在我仍在网站上并登录时将我重定向到登录页面。

有什么方法可以将其设置为只要用户在网站上就不会过期吗?只要网站在浏览器中打开?我做了一些研究,但找不到任何合适的教程。

我的PHP:

session_set_cookie_params(86400 * 30, "/");
if(isset($_COOKIE["PHPSESSID"])){
    session_id($_COOKIE["PHPSESSID"]);
}

session_start();

$pageURL = basename($_SERVER["REQUEST_URI"]);
$pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME); 

if( (!isset($_SESSION["user"]["status"])) && ($pageName != "login") ){
    header("Location: " . $baseURL . "/login.php");
    exit;
}

非常感谢您对此提供的任何帮助, 麦克

用户必须浏览到站点上的页面才能保留会话。

一个可能的解决方案是使用定时 ajax 调用来保持会话活动。

每次用户向您的站点发送 HTTP 请求时,包含会话数据的 cookie 都会一起发送,并且服务器会扩展会话。

添加 ajax 刷新会话调用的示例。在加载 jquery 后添加脚本。将每 60 秒向您的域根发送一次 ajax 调用。

setTimeout(function(){
     $.get({url:'/'})
 }, 60 * 1000);

使用 ajax 来保存会话有点老套,以后可能会导致很多问题。 谨慎使用!