Intereting Posts
Используйте PHP и MySQL для добавления изображений в галерею Как воспроизводить звук при добавлении новой записи в базу данных Как я могу использовать транзакцию db в laravel? Циклический код с использованием PHP Apache показывает неправильную версию для php PHP-код ошибки AJAX без использования массива Ошибка PHP APC Загрузка apc.so Salesforce / PHP – массовое исходящее сообщение (SOAP), проблема с тайм-аутом – см. Обновление # 2 PHP Websocket аутентифицирует пользователя в тесте (pass session cookie) Массив PHP как имя переменной Yii2: Как показать проверенные значения в CheckboxList заменить теги на переменные PHP, используя preg_match выбор DIV, которые находятся внутри неупорядоченного списка и элемента списка с помощью простого html dom WooCommerce – обрабатывать элементы корзины отдельно, если количество больше 1 Как я могу разместить php-скрипт в сетевом веб-приложении dotnet, размещенном на Azure

Как передать параметры Joomla на страницу iframe (wrapper)?

Я пытаюсь получить информацию о моих пользователях с помощью функции getUser () с php-скриптом, расположенным в iframe (обертке) Joomla. Кажется, что проблема передается параметрам в 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) } 

Некоторое представление о том, что происходит не так? Спасибо, Флоран

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

Как уже говорилось, если вы используете оболочку, среда 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(); ?> 

Конечно, страница, которая включает iframe, не «знает» Joomla – это другая среда!

Если я правильно понял, чего вы пытаетесь достичь, тогда вам действительно нужно создать статью в Joomla, которая отображает информацию пользователя, но вместо того, чтобы получить идентификатор пользователя:

 $user = JFactory::getUser(); 

вы должны отправить его как параметр POST / GET с страницы OUTER (вы можете добавить какую-то строку auth-string, если вам важны вопросы безопасности). Статья прочитает этот параметр POST / GET и отобразит информацию пользователя соответственно.

Страница OUTER (тот, который содержит iframe) должен обновить iframe и использовать в качестве URL-адреса тот же URL-адрес, который отображает статью (убедитесь, что она имеет «общедоступные» разрешения), но также будет отправлять идентификатор пользователя в качестве параметра, например:

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

Надеюсь, поможет!