2016-07-14 1 views
0

У меня странная ситуация со вчерашнего дня, и действительно неудобно, что cookie не устанавливается.PHP cookie автоматически удаляется или не устанавливается на частый запрос AJAX

Сценарий:

1) система имеет AJAX вызов, чтобы проверить сеанс пользователя, если он жив, или нет, пока пользователь не делает никакой активности на стр.

2) Запрос, отправленный на серверную сторону каждую минуту, чтобы проверить сеанс пользователя , если пользователь простаивает в течение определенных минут, он отправляет запрос на завершение сеанса на страницу выхода.

3) На странице выхода из системы он заканчивает сеанс из-за бездействия и устанавливает cookie для записи, когда пользователь повторно вводит учетные данные, он обновит сеанс, где он остался.

Проблема. Cookie не устанавливается, когда я пытался использовать следующие сценарии. используя все параметры

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

используется корневой путь

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

используются основные paramters.

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

Пробовал header_remove также, чтобы удалить все заголовки перед настройкой файла 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

Является ли AJAX вызовом скрипта в том же домене, что и скрипт PHP? – RiggsFolly

+0

Не могли бы вы рассказать мне, если вы отправляете частый запрос на этот скрипт? –

+0

@RiggsFolly yes –

ответ

1

Шахрукх предложение работает для меня. проблема с скриптом была частым запросом на истечение срока действия сеанса. Повторяющиеся запросы истечения сеанса сбрасывали значение cookie с NULL (в то время как сеанс истек после первого).

Я добавил чек, где я устанавливал файл 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)); 

} 
Смежные вопросы