Как насчет этого?
SELECT
(CASE WHEN @date <> date THEN @row := @row +1 ELSE @row END) AS rownum,
@date:= date,
date
FROM ( SELECT @row := 0, @date := NOW() ) r, stats
На самом деле это не так просто, как это звучит. Joomla использует собственную обработку сеанса с уникальной генерацией идентификатора сеанса и некоторым шифрованием, поэтому единственный способ получить доступ к данным сеанса Joomla - это использовать соответствующие функции Joomla (как предлагали другие). Недавно у меня был проект, в котором нам нужно было перенести аутентифицированного пользователя Joomla в отдельное приложение. Мы сделали это, добавив адаптер Joomla, который создает экземпляры классов пользователей Joomla, считывает пользовательские данные, помещает все в зашифрованный файл cookie и перенаправляет обратно в наше приложение. Там мы читаем зашифрованный файл cookie, создаем экземпляр нашего собственного объекта пользователя и отбрасываем файл cookie. Поскольку это не на 100% безопасно, мы меняем систему, чтобы записывать данные пользователя в таблицу базы данных и читать их из нашего приложения - таким образом мы избегаем небезопасного пути через cookie, потому что даже если cookie зашифрован (и содержит конфиденциальная информация о пользователе, достаточная для аутентификации пользователя) она будет передана по проводам и может быть перехвачена.
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
Выше приведен базовый сценарий, необходимый для доступа к ресурсам Joomla.
Мы сделали это, добавив адаптер Joomla, который создает экземпляры классов пользователей Joomla, считывает пользовательские данные, помещает все в зашифрованный файл cookie и перенаправляет обратно в наше приложение. Там мы читаем зашифрованный файл cookie, создаем экземпляр нашего собственного объекта пользователя и отбрасываем файл cookie. Поскольку это не на 100% безопасно, мы меняем систему, чтобы записывать данные пользователя в таблицу базы данных и читать их из нашего приложения - таким образом мы избегаем небезопасного пути через cookie, потому что даже если cookie зашифрован (и содержит конфиденциальная информация о пользователе, достаточная для аутентификации пользователя) она будет передана по проводам и может быть перехвачена.define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
Выше приведен базовый сценарий, необходимый для доступа к ресурсам Joomla.
Мы сделали это, добавив адаптер Joomla, который создает экземпляры классов пользователей Joomla, считывает пользовательские данные, помещает все в зашифрованный файл cookie и перенаправляет обратно в наше приложение. Там мы читаем зашифрованный cookie, создаем экземпляр нашего собственного объекта пользователя и отбрасываем cookie. Поскольку это не на 100% безопасно, мы меняем систему, чтобы записывать данные пользователя в таблицу базы данных и читать их из нашего приложения - таким образом мы избегаем небезопасного пути через cookie, потому что даже если cookie зашифрован (и содержит конфиденциальная информация о пользователе, достаточная для аутентификации пользователя) она будет передана по проводам и может быть перехвачена.define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
Выше приведен базовый сценарий, необходимый для доступа к ресурсам Joomla.
Там мы читаем зашифрованный файл cookie, создаем экземпляр нашего собственного объекта пользователя и отбрасываем файл cookie. Поскольку это не на 100% безопасно, мы меняем систему, чтобы записывать данные пользователя в таблицу базы данных и читать их из нашего приложения - таким образом мы избегаем небезопасного пути через cookie, потому что даже если cookie зашифрован (и содержит конфиденциальная информация о пользователе, достаточная для аутентификации пользователя) она будет передана по проводам и может быть перехвачена.define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
Выше приведен базовый сценарий, необходимый для доступа к ресурсам Joomla.
Там мы читаем зашифрованный cookie, создаем экземпляр нашего собственного объекта пользователя и отбрасываем cookie. Поскольку это не на 100% безопасно, мы меняем систему, чтобы записывать данные пользователя в таблицу базы данных и читать их из нашего приложения - таким образом мы избегаем небезопасного пути через cookie, потому что даже если cookie зашифрован (и содержит конфиденциальная информация о пользователе, достаточная для аутентификации пользователя) она будет передана по проводам и может быть перехвачена.define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
Выше приведен базовый сценарий, необходимый для доступа к ресурсам Joomla.
Решение состоит в том, чтобы установить сеанс для всего домена и / или сайта. Это применимо, если вы пытаетесь получить доступ к данным сеанса за пределами области действия joomla. Например, если ваш сайт joomla расположен на http://example.com/joomla/ , а другой ваш сайт на http://othersite.example.com/ , то файл cookie сохранение идентификатора сеанса не передается с joomla на другой сайт. Чтобы изменить это поведение, используйте session_ set_ cookie_ params перед каждым session_start () (я не очень хорошо знаю joomla, но вам нужно будет добавить только несколько строк кода). Используйте его следующим образом:
session_set_cookie_params(86400, '/', '.example.com');
86400 - время жизни сеанса, установите то, что вы предпочитаете (86400 - один день). '/' - это путь к файлу cookie. Это означает, что если ваш сайт joomla расположен на http://example.com/joomla/ , cookie сеанса все равно будет отправлен, если пользователь перейдет на http://example.com/ .
. Example.com - это домен. Обратите внимание на точку в начале, это очень важно. В нем говорится, что файл cookie сеанса будет отправлен на любой поддомен example.com. Если вы его не укажете, cookie будет отправлен только для адресов, начинающихся с http://example.com/ .
Это должно решить вашу проблему, если вы не пытаетесь получить доступ к сеансу данные из другого домена. Если это так, оставьте здесь комментарий, я посмотрю, смогу ли я что-нибудь найти.
Вполне возможно, что, как и Wordpress, Joomla не использует какие-либо «сеансовые» данные, а извлекает данные непосредственно из базы данных. В этом случае вам нужно будет использовать собственные функции Joomla.
Но это только из моего опыта работы с Wordpress.
Обновлено
Думаю, я ошибался.
Предположительно, это класс api для доступа к переменным сеанса Joomla:
// Возвращает ссылку на глобальный Объект JSession, создавая его только если он еще не существует $ session = & JFactory :: getSession ();
// Получить значение из сеанса var $ value = $ session-> get ('var_name', null);
// Помещаем значение в сессию var $ session-> set ('var_name', $ value);
, чтобы получить идентификатор пользователя, вам нужно использовать функции Joomlas:
$ user = & JFactory :: getUser ();
$ user-> get ('id');
позволит вам получить идентификатор пользователя. однако вам нужно будет сделать это на странице joomla, поэтому я не знаю, насколько полезной для вас будет эта шляпа.
Было бы полезно увидеть, как это достигается в мостах приложений, таких как jFusion. Я предлагаю по крайней мере системный плагин для Joomla, который будет использовать функции joomla, чтобы получить все, что вам нужно, от установки joomla и доставки вашего приложения в ApplicationInitialize. Самым важным вопросом будет моделирование потока данных!
define( '_JEXEC', 1 );
define('JPATH_BASE', 'your joomla basedir goes here' );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
JPluginHelper::importPlugin('system');
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');
$user =& JFactory::getUser();
if ($user->guest) {
echo 'stuff';
//redirect('/');
} else {
echo 'user';
}
Чтобы получить идентификатор пользователя Joomla, используйте:
$user =& JFactory::getUser();
$user_id = $user->get('id');
и чтобы получить идентификатор сеанса пользователя:
$session = & JFactory::getSession();
$session_id = $session->getId();
Решение, предложенное Стефаном Геригом
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(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');
, работает нормально, я провел много долгих ночей, пытаясь получить доступ к Joomla! ресурсы вне папки joomla.
$session = &JFactory::getSession();
В следующем коде отлично работает, когда был вызван метод getApplication
.
Спасибо за решение.
Если вы храните свои сессии в базе данных, вы можете декодировать данные сессии, как в этом комментарии:
http://www.php.net/manual/en/function.session-decode.php#79244