从外部脚本的Joomla 2.5获取用户数据(Joomla 2.5 Get User Data fr

2019-06-25 14:49发布

我需要,因此目前在使用Joomla的Joomla本身之外的记录从一个程序的用户的信息。 我升级从1.5到2.5的,什么我以前不工作了。

<?php

define( '_VALID_MOS', 1 );

include_once( 'globals.php' );
require_once( 'configuration.php' );
require_once( 'includes/joomla.php' );
$option="test";
$mainframe = new mosMainFrame( $database, $option, '.' );
$mainframe->initSession();

$my = $mainframe->getUser();
$joomla_name = $my->name;
$joomla_email = $my->email;
$joomla_password = $my->password;

经过一番研究,我想出了这一点:

<?php
define( '_JEXEC', 1 );
define( 'JPATH_BASE', dirname(__FILE__) );
define( 'DS', '/' );

require_once ( JPATH_BASE .DS.'configuration.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );

$my =& JFactory::getUser();
$joomla_name = $my->name;
$joomla_email = $my->email;
$joomla_password = $my->password;
$joomla_username = $my->username;

它不会产生任何错误,但似乎工作。 然而,用户对象为空。 这个脚本是在同一目录中安装Joomla。 可能是什么问题? 谢谢!

资料来源:

http://www.cmsbloke.com/accessing-joomla-objects-from-an-external-script/

Answer 1:

来自http://docs.joomla.org/How_to_access_session_variables_set_by_an_external_script

解决方法:更换session_start(); 在与外部脚本

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();

一定要改变JPATH_BASE以满足您的目录结构。

替换$_SESSION[ 'name' ] = "value"; 在与外部脚本

$session =& JFactory::getSession();
$session->set('name', "value");
Now you can retrieve this session variable using:

$session =& JFactory::getSession();
echo $session->get('name');


Answer 2:

事实证明,我有两个问题:

  1. 我的剧本是在www.example.com ,而我是下登录example.com ,所以不同领域被扔关闭会话数据。
  2. 我还没有初始化的应用程序,这显然是必要的。

下面是结果:

<?php
define( '_JEXEC', 1 );
define( 'JPATH_BASE', dirname(__FILE__) );
define( 'DS', '/' );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

JFactory::getApplication('site')->initialise();

$user = JFactory::getUser();
$joomla_name = $user->name;
$joomla_email = $user->email;
$joomla_password = $user->password;
$joomla_username = $user->username;


Answer 3:

我觉得人都有过在2.5的Joomla这个问题,事情发生了变化。 我还没有找到您所请求的方式解决,但写了这个解决办法(不含尽管密码字段),你可能要使用。

定义与数据库的连接:

<?php
   $host="localhost";
   $username="DB_USERNAME";
   $password="DB_PASSWORD";
   $db_name="DB_NAME";
   mysql_connect($host,$username,$password)or die(mysql_error());
   mysql_select_db($db_name)or die(mysql_error());
?>

回声创建一个查询和回声在一个表中的结果:

<table style="background:#FFF; color:#000;">
<?php
$query = "SELECT username,name,email FROM j25_users "; 
$result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) { 
        echo '<tr><td>',$row["username"],'</td><td>',$row["name"],'</td><td>',$row["email"],'</td></tr>' ;
    }
?>
</table>

你将需要改变j25_users到数据库表的正确的前缀。

更新:好多导入框架来获取用户对象。

希望这会派上用场你。 问候。



Answer 4:

如果你想使用Joomla跳过! 功能,您可以查询的Joomla! 数据库。 加入表js25_sessionjs25_users与用户ID。 这样一来,就可以得到网站(也可能是在线用户数)每个当前登录的用户和所有客人。



文章来源: Joomla 2.5 Get User Data from External Script