2016-05-31 2 views
0

Мне нужно поймать логинсессию с веб-страницы joomla и называть ее с сайта, написанного на другом сервере.Получить joomla loginsession с другой php-страницы на другом сервере

Это то, что я пробовал:

if (!defined('_JEXEC')) 
{ 
    define('_JEXEC', 1); 
    define('JPATH_BASE', realpath(dirname(__FILE__))); 
    require_once (JPATH_BASE .'/includes/defines.php'); 
    require_once (JPATH_BASE .'/includes/framework.php'); 
} 

defined('DS') or define('DS', DIRECTORY_SEPARATOR); 
$app = JFactory::getApplication('site'); 
$user = JFactory::getUser(); 
$groups = $user->groups; 


if($user->id) 
{ 
    if (isset($groups[7]) or isset($groups[8])) 
    { 
     echo $user->username; 
    } 
    else 
    { 
     echo 'false'; 
    } 
} 
else 
{ 
    echo 'false'; 
} 

Я загрузил это в корневую папку сайта Joomla. Если я назову его через браузер, он отлично работает. Он возвращает имя пользователя при входе в систему и возвращает false, когда я выхожу из системы.

Если я называю его из PHP Страница возвращает false

$siteText= file_get_contents ("http://examplejoomlasite.org/miniphpscript.php"); 

Есть ли другой шанс поймать JOOMLA loginsession на другой странице?

ответ

0

Проблема в том, что ваш вызов является запросом сервера. Это означает, что для мини-скрипта, если вы откроете браузер на своем сервере, он ничего не знает о сеансе браузера на вашем локальном компьютере.

Вы должны использовать лучшую HTTP-библиотеку, такую ​​как Guzzle http://guzzlephp.org, которая поставляется с поддержкой файлов cookie. Затем вам нужно сначала войти в систему через Gzzle и сохранить файл cookie как файл. Во всех ваших последующих запросах на miniphpscript вам необходимо использовать этот файл cookie.

+0

Есть ли возможность поймать исходный логин, а не логический логин? –

0

Повторяя ваш вопрос снова и снова, я пришел к выводу, что вам нужна интеграция пользователей на обоих серверах. это означает, что вы можете знать пользовательские данные на другом сервере. Пойдите для jfusion, чтобы иметь общего пользователя на обоих сайтах; если оба они основаны на php. Ссылка на JFusion: http://www.jfusion.org/feature/what-is-jfusion. Если ваша система основана на любой из перечисленных фреймворков, таких как dokuwiki, phpbb3 forum, поддержка kayako или сама Joomla, тогда вы можете легко ее интегрировать. Кроме того, если у вас есть другие рамки, с которыми вы хотите интегрировать пользователей, вы можете создать плагин jfusion. Jfusion работает плавно с фреймворками, указанными выше.

Вы можете проверить свою документацию, чтобы создать свой собственный JFusion плагин http://www.jfusion.org/docs/doku.php?id=dev;intro

+0

второй сайт php на 100% самодельный, и за ним нет cms, поэтому интеграция довольно сложна, я думаю? Мне не нужны пользователи на втором сайте, я просто хочу поймать один и тот же сеанс. Если сеанс активен, на странице есть несколько «админбатов». –

0

Самый простой способ сделать это, чтобы разработать небольшой веб-сервиса на сервере, который будет просто обновить таблицу в базе данных с авторизаций на сайте Joomla ,

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

+0

Я бы не сказал, что просто –

Смежные вопросы