Member 10118655 Ответов: 1

Как получить доступ к объекту пользователя в joomla 3.9


Я хочу получить идентификатор пользователя в iframe на сайте joomla (используя виртуальные хосты). Я использую Joomla 3.9.3 с wamp 3.17 под win 10 pro (64 бит). мой сайт находится в папке 'clib по адресу www.
Как указано на многих форумах, мой php-файл с использованием iframe начинается со следующего кода:
````
<?php

define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );

require_once( JPATH_BASE . '/clib/includes/defines.php' );
require_once( JPATH_BASE . '/clib/includes/framework.php' );
require_once( JPATH_BASE . '/clib/libraries/joomla/factory.php' );
$mf1 = JFactory::getApplication('site');

$user = JFactory::getUser();
$uname=$user->name;
$uid=$user->id;


?>

````

Это работает при доступе к сайту с компьютера localhost, но не при доступе из локальной сети. Все, что мне нужно, - это идентификатор пользователя.

Что я уже пробовал:

Это работало раньше, когда сайт был в корневой папке с использованием wamp 2.4 на win 8.2 и joomla 3.4.0 после обновления компьютера до win 10 pro, wamp 3.1.7 & joomla 3.9.4, тот же код больше не работает. Я пробовал изменить путь, указанный для 'defines.php', 'framework.php' & 'factory.php-безрезультатно.

Gerry Schmitz

Запустите старую конфигурацию на Win 10, а затем конвертируйте ее ... по кусочку за раз.

Member 10118655

Я уже пробовал. Сайт не восстанавливается должным образом на более старой joomla 3.4.0 из-за ошибки в резервном копировании (взятом с помощью akeeba). У меня не было другого выбора, кроме как начать все заново. Теперь все работает нормально, кроме iframe, где требуется идентификатор пользователя, используя приведенный выше код. Странно то, что код работает при локальном входе в систему на машине localhost, но не из локальной сети.

1 Ответов

Рейтинг:
12

Member 10118655

Решенный
На самом деле решение очень простое. Начиная с версии 3.8 они несколько изменили доступ к объекту пользователя.
Я просто изменил строки как ниже:
````
require_once( JPATH_BASE . '/libraries/joomla/factory.php' );

с

require_once ( JPATH_BASE . '/libraries/joomla/platform.php' );

а также approplraie изменения в пути:

define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ].'/clib' );
````
и Ла Виола, все хорошо.

Спасибо ребятам из Joomla и друзьям Codeproject.


[no name]

Спасибо!