如何将Joomla参数传递给iframe(包装器)页面?

时间:2012-02-13 21:22:23

标签: php joomla

我尝试使用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);
?>  

2 个答案:

答案 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();
?>