Joomla 1.5.25 только что обновлена с 1.5.23, имеет проблемы с сохранением в сеанс и постоянство, отлично работает на 1.5.23, но данные сеанса не сохраняются в БД при использовании JSession-> set
НаписалПользовательское приложение поверх Joomla, управляющее пользователями, импортированными из прежней системы, не может использовать Joomla Users для этого (или, по крайней мере, у меня его нет и у меня нет времени), вход в систему работает следующим образом:
- Пользовательотправляет сообщение электронной почты pass
- приложение проверяет, существует ли пользователь
- если пользователь существует, я сохраняю объект пользователя в сеансе
- перенаправляем пользователя на ресурс
Здесьэто фрагмент для сохранения пользователя в сеансе
$session = JFactory::getSession();
$session->set('appUserData', array(
'data' => $USER_OBJECT,
'timestamp' => time(),
'role' => 0,
'permits' => $permits
);, "custom_namespace");
Теперь, так как я делаю это за пределами области действия Joomla, я должен повысить
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(dirname(__FILE__)));
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
Как только я сделаю $ session-> set() если я пытаюсь использовать $ session-> get () для того же сценария, он извлекает весь ресурс, который я только что сохранил, но если я пытаюсь извлечь $ сеанс из другого сценария, я ничего не получаю, вот сценарий Other
<code><?php
error_reporting(E_ALL);
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(dirname(__FILE__)));
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe = JFactory::getApplication('site');
$session = JFactory::getSession();
echo "<pre>";
print_r($_COOKIE);
print_r($session);
print_r($_SESSION);
echo "
"; выход;
Здесь яполучить только мой массив cookie и массив сеанса с информацией о сеансе по умолчанию:
Array
(
[__default] => Array
(
[session.counter] => 3
[session.timer.start] => 1329168055
[session.timer.last] => 1329168057
[session.timer.now] => 1329168062
[session.client.browser] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 FirePHP/0.7.0
)
)
БД никогда не обновляется с содержимым моей только что созданной переменной сеанса, я пытался сделать несколько error_logs на базе данных writeАдаптер сеанса, который записывает в БД, и я думаю, что проблема здесь (библиотеки / joomla / сессия / хранилище / database.php), строка 82:
$session = &JTable::getInstance('session');
if ($session->load($id) == true) { /*...*/} // never entering here
else { /*...*/ } // always here
Я попытался вывести в журнал содержимое$ id и ссылается на действительный идентификатор первичного ключа в db
error_log('SELECT * FROM jos_session WHERE session_id = "' . $id . '"');
возвращает что-то вроде этого SELECT * FROM jos_session WHERE session_id = "38e6468f35f1994425de3919fa767a3d" , что я могу подтвердитьвозвращает верную запись, я попытался вытащить сюда старый источник из 1.5.23, но даже если это не заставит его работать снова, есть какие-нибудь идеи по поводу того, что могло бы быть обновлено и провалилось?
**ОБНОВЛЕНИЕ **
Я тоже пытался обрезать таблицы, на самом деле, я думаю, что проблема более конкретно заключается в том, что в какой-то момент сеансПри записи в db, поскольку у меня есть несколько подключений к mysql, механизм хранения базы данных JSession Mysql для сессии запутывается, даже страннее то, что в среде с чистым 1.5.23 эта путаница не возникает, ресурсы создаютсядля каждого отдельного соединения я прошел через изменения с 1.5.23 до 1.5.25 и не могу найти ничего, связанного с управлением ресурсами БД или какой-либо свободной ссылкой на объект DBO, я думаю, мне нужно профилировать каждое соединение и проверить, гдепроблема, данные живут на том же сервере MySQL, но на разных БД