防止非活动用户的 PHP 会话中的会话过期

2022-08-30 19:22:49

我的应用程序有一个问题:我的应用程序有很多表单,需要大约1个小时才能完成此表单,因为表单是动态的(可以添加其他表单)。问题是:我的Web服务器的会话是24分钟。当用户填写表单时,他们花费了大量时间并且会话超时,因为服务器识别出用户处于非活动状态。提交表单时非常烦人,大多数数据丢失,用户返回到登录页面。我试图用这个代码使我的会话在10小时内过期:

ini_set('session.gc_maxlifetime', '36000');

但它在我的服务器中不起作用,我的服务器是否有可能阻止功能?ini_set()

那么,我该怎么做才能解决这个问题呢?是否可以防止会话超时,以便将会话扩展到 10 小时?或者我可以禁用会话过期吗?

谢谢


答案 1

不要将 ini 中的时间设置为固定长度,而应提醒会话超时在重新加载时重置。因此,创建一些ajax代码,每5分钟左右对文件(图像或smth)执行一次请求。这样,计时器每5分钟重置一次,用户可以花一天时间填写表单。


答案 2

下面是一个使用 jQuery Ajax 调用来防止会话超时的示例:

var refreshTime = 600000; // every 10 minutes in milliseconds
window.setInterval( function() {
    $.ajax({
        cache: false,
        type: "GET",
        url: "refreshSession.php",
        success: function(data) {
        }
    });
}, refreshTime );

在 refreshSession 中.php你可以执行类似 session_start()


推荐