访问Joomla外部的会话数据

Ale*_*art 13 php joomla

我试图在Joomla之外运行一个应用程序(不是作为插件),我想访问登录用户的信息(userid).我想知道我该怎么做呢?有没有我可以包含的文件?我尝试使用$ _SESSION,但它显示为空.

我的问题有一个简单的解决方案吗?感谢您的时间.

Ste*_*rig 19

实际上,这并不像听起来那么容易.Joomla使用自己的会话处理来实现唯一的会话ID生成和一些加密,因此进入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');
Run Code Online (Sandbox Code Playgroud)

以上是访问Joomla资源所需的基本脚本.


jka*_*zer 8

 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';
    }
Run Code Online (Sandbox Code Playgroud)