На какое время истек срок действия ваших файлов cookie сеанса?В CodeIgniter существует известная ошибка, при которой, если вы остаетесь на странице, которая выполняет AJAX-запросы после истечения срока действия файла cookie, он сбрасывает идентификатор сеанса в базе данных, но не сможет установить его в файле cookie браузера, поскольку он асинхронный.запрос.Это приводит к разъединению при следующем не асинхронном GET-запросе, что приводит к тому, что библиотека сеанса вызывает sess_destroy ().Если это похоже на вашу ситуацию, дайте мне знать.В противном случае, предоставьте более подробную информацию, пожалуйста.
Редактировать: Возможно, я должен также включить исправление для этой ошибки здесь.Создайте файл в / application / library с именем «MY_Session.php» (если он еще не существует).Там вы можете вставить это:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
* Session Class Extension
*/
class MY_Session extends CI_Session {
/*
* Do not update an existing session on ajax calls
*
* @access public
* @return void
*/
function sess_update() {
if ( !isAjax() ){
parent::sess_update();
}
}
}
?>
То есть функция isAjax () - это вспомогательный инструмент, который у меня есть в /application/helpers/isajax_helper.php, который выглядит следующим образом:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* is_ajax_call
*
* Determines if the current page request is done through an AJAX call
*
* @access public
* @param void
* @return boolean
*/
if ( ! function_exists('isAjax')) {
function isAjax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
}
}
?>
Какойссылка в моем файле конфигурации выглядит так:
$autoload['helper'] = array('otherhelper1', 'isajax', 'otherhelper2');