2013-04-15 4 views
2

У меня возникли проблемы с сеансами/cookies при использовании Joomla! Версия: Joomla! 1.5.9 Производство/Стабильный [Ватани] 9 января-2009 23:00 GMT.Joomla Empty Sessions and Cookies

Я пытаюсь сохранить данные в сессии, и доступ к нему на следующей странице, я попробовал:

1) Использование joomlas сессий ($ session-> набор («переменная», «данные»)) - Это мой предпочтительный метод

2) Используя обычные PHP сессии ($ _SESSION [ 'Var'] 'данные' =) - Это работает отлично, пока я не инициализировать JOOMLA универсальный в

3) Использование PHP Куки (SetCookie ('var', 'data', time() + 3600, '/');) - Снова это работает, пока я не инициализирую joomla.

Вот код, который я пытаюсь использовать:

Page 1:

define('_JEXEC', 1); 
define('JPATH_BASE', realpath(dirname(__FILE__).'/../../..')); 
define('DS', DIRECTORY_SEPARATOR); 
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
$mainframe =& JFactory::getApplication('site'); 
$mainframe->initialise(); 

$session = JFactory::getSession(); 

$thedata = array(); 
$i = 0; 
if($resultscount > 0) // $resultscount = mysql_num_rows($sql) == 1097 in my script 
{ 
     while($row = mysql_fetch_assoc($result)) 
       $thedata[$i]['id'] = $row['user_id']; 
       ...LOTS more additions to $thedata, 1000+ rows containing 28 variables each. 
$i++; 
} 
$session->set('thedata',$thedata); 

Page 2:

define('_JEXEC', 1); 
define('JPATH_BASE', realpath(dirname(__FILE__).'/../../..')); 
define('DS', DIRECTORY_SEPARATOR); 
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
$mainframe =& JFactory::getApplication('site'); 
$mainframe->initialise(); 

$session = JFactory::getSession(); 
print_r($session->get('thedata')); 

Сеанс всегда пусто. Я заметил, что если сеанс содержит только небольшой объем данных (1 или 2 строки), он работает, но когда я пытаюсь сохранить большое количество результатов в сеансе, он прерывается, а сеанс пуст на следующей странице.

То же самое происходит с cookie, мало результатов = работает отлично, много результатов = cookie empty.

Что я делаю неправильно?

+1

Перед тем, как говорить, пожалуйста, обновите до версии Joomla 1.5.26, которая является последней версией серии 1.5. – Lodder

+0

Спасибо за быстрый ответ, однако я не могу обновить, поскольку я пишу болт для чьей-то системы и не имею их разрешения для обновления существующей платформы joomla. –

+0

У вас есть правильный обработчик сеанса в файле configuration.php? –

ответ

0

Скорее всего, сохраняя более 30000 переменных в двумерном массиве в сеансе, вы получаете переполнение, которое искажает ваши данные, поэтому они теряются. Вы ничего не получаете путем дублирования базы данных в хранилище сеансов (что ограничено в пространстве).

Уместнее повторно запрашивать данные. Кроме того, используйте Joomla! API вместо прямого использования функций mysql.

$db = JFactory::getDBO(); 
$db->setQuery("SELECT ..."); 
$thedata = $db->loadObjectList('id'); 

все, что нужно (двойная индексация с $i не служит никакой цели).