Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Joomla参数传递到iframe(包装器)页面?_Php_Joomla - Fatal编程技术网

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

Php 如何将Joomla参数传递到iframe(包装器)页面?,php,joomla,Php,Joomla,我尝试使用getUser()函数和Joomla的iframe(包装器)中的php脚本获取用户信息。向iframe代码传递参数似乎有问题。捕获用户信息的唯一方法是将代码插入基本文章(不是iframe) 变量转储($user);输出显示: object(JUser)#17 (23) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> N

我尝试使用getUser()函数和Joomla的iframe(包装器)中的php脚本获取用户信息。向iframe代码传递参数似乎有问题。捕获用户信息的唯一方法是将代码插入基本文章(不是iframe)

变量转储($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) }
知道出了什么问题吗? 非常感谢。 弗洛伦特


当然,包含iframe的页面并不“知道”Joomla-这是一个不同的环境

如果我正确理解了您试图实现的目标,那么您确实应该在Joomla中创建一篇显示用户信息的文章,而不是从以下位置获取用户id:

$user = JFactory::getUser();
您应该从外部页面将其作为POST/GET参数发送(如果安全性对您很重要,您可以添加某种身份验证字符串)。本文将阅读此POST/GET参数并分别显示用户信息

外部页面(包含iframe的页面)应刷新iframe,并将显示文章的url用作url(确保其具有“公共”权限),但也将用户id作为参数发送,例如:

iframe src="http://<url to joomla>?id=articleId&userId=<user-id>
iframe src=“http://?id=articleId&userId=

希望有帮助!

如前所述,当您使用包装器时,Joomla环境是未知的。因此,您需要在使用Joomla API之前嵌入它。要做到这一点,只需复制并粘贴此代码(或创建一个新的PHP文件并将其包含在自定义页面中):



我可以看出问题与iframe(或“包装器”)内容有关。代码在常规文章中正常工作(我使用sourcerer)。外部iframe是否需要任何设置才能正常工作?经过一些调查后,我了解到我需要在iframe$mainframe=&JFactory::getApplication中添加以下内容('site');$mainframe->initialise();谢谢你。我应该提到iframe也是主页,正如Arnaud建议的那样,在其中初始化Joomla环境可能更好。
iframe src="http://<url to joomla>?id=articleId&userId=<user-id>
<?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();
?>