2016-05-31 54 views
0

我需要從joomla網頁捕獲loginsession,並從網站上調用位於不同服務器上的網址。從其他服務器上的另一個php頁面獲取joomla loginsession

這是我的嘗試:

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

問題是您的電話是服務器請求。意思是它看起來像miniphpscript,如果你打開你的服務器上的瀏覽器,它不知道你的本地計算機上瀏覽器會話的任何事情。

你應該使用一個更好的HTTP庫,如Guzzle http://guzzlephp.org,它支持cookie。然後,您必須先登錄Guzzle槽並將cookie保存爲文件。在你的所有後續請求miniphpscript你需要使用該cookie。

+0

是否有機會趕上原始登錄,而不是gu login登錄? –

0

一遍又一遍地回答您的問題後,我斷定您需要在兩臺服務器上進行用戶集成。這意味着您可以在另一臺服務器上知道用戶數據。 去jfusion在這兩個網站都有共同的用戶;提供都是基於PHP的。鏈接到JFusion是http://www.jfusion.org/feature/what-is-jfusion。如果您的系統基於任何列出的框架,如dokuwiki,phpbb3論壇,kayako支持OR joomla本身,那麼您可以輕鬆地整合它。另外,如果您有任何其他框架需要用戶集成,那麼您可以創建一個jfusion插件。 Jfusion可以與我上面提到的框架無縫協作。

您可以查看他們的文檔創建自定義JFusion插件http://www.jfusion.org/docs/doku.php?id=dev;intro

+0

第二個PHP站點是100%自制的,並且它背後沒有cms,所以我認爲整合非常困難? 我真的不需要第二個網站上的用戶,我只想抓住同一個會話。如果會話處於活動狀態,則頁面上會顯示一些「adminbuttons」。 –

0

一個簡單的方法做,這是發展你的服務器上的一個小的web服務,這將只是在你的數據庫中的Joomla網站上的認證更新表。

然後,您將需要開發一個小的Joomla插件,它會在身份驗證時觸發,它會調用webservice並將其更新爲登錄信息。

+0

我不會說這很容易 –

相關問題