我尝试使用getUser()函数获取我的用户信息,其中php脚本位于Joomla的iframe(包装器)中。似乎有问题将参数传递给iframe代码。我能捕获用户信息的唯一方法是将代码插入基本文章(不是iframe)。
var_dump($ user);输出显示:
object(JUser)#17 (23) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["usertype"]=> NULL ["block"]=> NULL ["sendEmail"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["groups"]=> array(0) { } ["guest"]=> int(1) ["_params":protected]=> object(JRegistry)#18 (1) { ["data":protected]=> object(stdClass)#19 (0) { } } ["_authGroups":protected]=> NULL ["_authLevels":protected]=> NULL ["_authActions":protected]=> NULL ["_errorMsg":protected]=> NULL ["_errors":protected]=> array(0) { } ["aid"]=> int(0) }
有什么问题的想法? 谢谢, Florent的
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$user = JFactory::getUser();
echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is $user->username}</p>";
echo "<p>Your usertype is {$user->usertype} which has a group id of {$user->gid}.</p>";
//var_dump($user);
?>
答案 0 :(得分:0)
当然,包含iframe的页面并不“知道”Joomla - 这是一个不同的环境!
如果我正确理解了您要实现的目标,那么您真的应该在Joomla中创建一篇显示用户信息的文章,而不是从以下位置获取用户ID:
$user = JFactory::getUser();
你应该从OUTER页面发送它作为POST / GET参数(如果安全问题,你可以添加某种auth-string)。本文将阅读此POST / GET参数并分别显示用户信息。
OUTER页面(包含iframe的页面)应刷新iframe,并使用显示文章的相同网址作为网址(确保它具有“公共”权限),但也会发送用户ID作为参数,例如:
iframe src="http://<url to joomla>?id=articleId&userId=<user-id>
希望它有所帮助!
答案 1 :(得分:0)
如前所述,wchen使用包装器,Joomla环境未知。所以你需要在使用Joomla API之前嵌入它。要做到这一点,只需复制并粘贴此代码(或创建一个新的PHP文件并将其包含在您的自定义页面中):
<?php
define('_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] );
define( 'DS','/' );
require_once ( JPATH_BASE.DS. 'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
require(JPATH_BASE.DS.'libraries/joomla/factory.php');
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
?>