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

新手上路,请多包涵

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

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

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

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

谢谢

原文由 dian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 332
2 个回答

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

原文由 Prikkeldraad 发布,翻译遵循 CC BY-SA 3.0 许可协议

下面是一个使用 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 你可以做一些像 _sessionstart()

原文由 MDeuerlein 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏