2013-04-15 51 views
7

我們正在增加的Moodle到我們的網站接受登錄(不同的服務器,不同的子域名,但相同的主域和服務器設置爲能夠相互溝通),我們想要什麼有它做的是:的Moodle從外部站點

  • 用戶訪問主網站
  • 用戶
  • 用戶登錄點擊一個鏈接到Moodle的
  • 用戶自動登錄到Moodle的,而無需重新輸入他們的信息
  • 如果用戶的書籤或直接訪問的Moodle,他們仍然可以登錄,直接出現

我們已經把它設置成使用DB AUTH(外部數據庫認證),所以從主站點的帳戶也爲Moodle的工作,我只是有不知道怎麼弄的Moodle接受現有的證書,並自動登錄的用戶。

+0

可以請你幫我如何連接外部網站到你moodle..i嘗試了lot..but我不能做你it..can沒有 – user3663

回答

9

所以我能把這個解決了,以爲我會分享我的情況下,任何其他解決方案在今後類似的問題。

由於我們的Moodle站點和主要網站位於同一個域,我所做的是在我們的主網站的登錄腳本,添加以下代碼:

$postData = array('username' => $username, 'password' => $password); 
$post = http_post_fields('http://moodle.example.com/login/index.php', $postData); 
$headers = http_parse_headers($post); 
foreach($headers['Set-Cookie'] as $cookie) 
{ 
    $details = http_parse_cookie($cookie); 
    foreach ($details->cookies as $name => $value) 
     setcookie($name, $value, $details->expires, $details->path, 'example.com'); 
} 

基本上,我張貼的登錄憑據到使用http_post_fields的moodle登錄腳本,儘管cURL也應該可以工作,解析標題以獲取Cookie Moodle集,然後使用基本域而不是更具體的Moodle子域自行設置這些Cookie。這可能會導致一些問題,如果用戶從更具體的子域中有一個現有的cookie,所以一定要刪除名稱爲MoodleSession的任何現有的cookie。

+0

你使用一個域或兩個子域,請幫助我嗎? –

+0

如果它在不同的域上? – user3663