我从昨天开始就遇到了一个奇怪的情况,而且没有设置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)
{
}//
});//
}
答案 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));
}