2013-04-15 19 views
7

Stiamo aggiungendo Moodle al nostro sito (server diverso, sottodominio differente, ma lo stesso dominio principale, e i server sono configurati per poter comunicare tra loro) e cosa vogliamo ce l'ha fare è: accedeMoodle Accetta login da sito esterno

  • utente del sito principale
  • utente accede
  • utente fa clic su un link per Moodle
  • l'utente è connesso automaticamente in Moodle senza dover immettere nuovamente le loro informazioni
  • Se i segnalibri dell'utente o direttamente accesso a Moodle, possono ancora accedere direttamente lì

Abbiamo già impostato utilizzando db auth (l'autenticazione del database esterno) in modo che gli account del sito principale funzionino anche per Moodle, ho appena non ho idea di come ottenere Moodle per accettare le credenziali esistenti e accedere automaticamente all'utente.

+0

puoi aiutarmi per favore come collegare il tuo sito esterno al tuo moodle .. ho provato molto..ma non potevo farlo..anche ti prego di aiutarmi – user3663

risposta

9

Quindi sono stato in grado di risolvere il problema e ho pensato di condividere la mia soluzione nel caso in cui qualcun altro avesse un problema simile in futuro.

Poiché il nostro sito Moodle e sito principale sono sullo stesso dominio, quello che ho fatto è stato nello script di accesso per il nostro sito principale, ho aggiunto il seguente codice:

$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'); 
} 

Fondamentalmente, ho postato le credenziali di accesso allo script di accesso moodle usando http_post_fields, anche se cURL dovrebbe funzionare bene, analizzato le intestazioni per ottenere i cookie Moodle, quindi impostare quei cookie io stesso usando il dominio di base invece del sottodominio Moodle più specifico. Ciò può causare alcuni problemi se l'utente ha un cookie esistente dal sottodominio più specifico, quindi assicurati di eliminare qualsiasi cookie esistente con un nome di MoodleSession.

+0

hai usato un dominio o due sottodomini? –

+0

se si trova sul diverso dominio? – user3663

Problemi correlati