PHP cookie正在自动删除或未在频繁的AJAX请求上设置

时间:2016-07-14 10:46:22

标签: php ajax cookies

我从昨天开始就遇到了一个奇怪的情况,而且没有设置cookie真的很尴尬。

情景:

1)当用户没有在页面上进行任何活动时,系统有AJAX调用来检查用户会话是否存活。

2)每分钟发送到服务器端的请求以检查用户会话 如果用户在特定时间内处于空闲状态,则会向登出页面发送过期会话请求。

3)在注销页面上,由于不活动而使会话过期并设置cookie用于记录,当用户重新输入凭据时,它将刷新它离开的会话。

问题是。 我尝试以下方案时没有设置Cookie。 使用所有参数

setcookie("config_transactionID", $_SESSION['cableTransactionID'], $expire,'/', 'http://domain.com');

使用了根路径

setcookie("config_transactionID", $sessionValue, $expire,'/');

使用了基本参数。

setcookie("config_transactionID", $_SESSION['cableTransactionID'], $expire);

尝试header_remove,在设置cookie之前删除所有标头。

如果正在设置cookie,则使用一些静态内容来设置cookie。 但系统返回

 set_cookie returns: bool(true)

向后端发送请求的代码

function expireSession(){
$.ajax({
    type: "POST",
    url: SiteVars.siteUrl+"Logout.php?sess=idle",
    data:{test:"test"},

    success: function(data)
    {

    }//

 });//

}

1 个答案:

答案 0 :(得分:1)

Shah Rukh的建议对我有用。脚本的问题是频繁的会话到期请求。重复会话到期请求使用NULL重置cookie值(会话在第一个之后过期)。

我添加了一个检查,我在哪里设置一个cookie,另外还将随机字符串添加到实际值,以确保它永远不会为空。

if(!isset($_COOKIE['config_transactionID'])){

    $expire = time() + (60 * 60 * 24 * 30);
    $transaction = base64_encode($_SESSION['cableTransactionID'].'--'.md5(rand(999,9999)));
    $var = setcookie("config_transactionID", $transaction, time()+ (60*60*24*30));

}