使用Ajax扩展PHP会话超时

时间:2015-06-23 06:50:24

标签: javascript php jquery ajax session

我有一个网页,其中包含一个巨大的表单。在大多数情况下,会话超时和用户丢失了大量数据。我搜索了这个问题并找到了这个Prevent session expired in PHP Session for inactive user

我实现了ajax调用

function heartbeat() {
    clearTimeout(window.intervalID);
    $.ajax({
        url:    "trash.png",
        type:   "post",
        cache:  false,            
        dataType: 'json',
        success: function(data) {
        },
        complete: function() {
            window.intervalID = setTimeout(function() {
                heartbeat();    
            }, 300000); 
        }
    });
}

并在heartbeat();中调用$(document).readytrash.png与我使用Ajax的jQuery代码的文件位于同一目录中。

我用fiddler检查过,jQuery每5分钟向trash.png发送一次请求。但是30分钟后,我的会话仍然会到期。

用户登录网页时会调用

session_start();

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果不调用启动会话的php脚本,就无法使会话保持活动状态,只需下载png文件就不会使会话死亡。像这样创建一个PHP脚本:

<?php session_start(); ?>

将其放入目录并调用此而不是该trash.png资产。

在调用session_start()之前,您可能需要调用其他内容,具体取决于您在其他脚本中启动它的方式。

答案 1 :(得分:0)

在ajax中你可以将超时发布为

jQuery.ajax({
       url: 'ajaxhandler.php',
       success: function (result) {                               
            returned_value=result;
       },
       timeout: 10000,
       async: false
    });