Moodle Accept Вход с внешнего сайта

Мы добавляем Moodle на наш сайт (разные серверы, разные поддомены, но тот же основной домен, и серверы настроены так, чтобы иметь возможность общаться друг с другом), и мы хотим, чтобы он это делал:

  • Пользователь обращается к основному сайту
  • Пользователь регистрируется в
  • Пользователь нажимает ссылку на Moodle
  • Пользователь автоматически регистрируется в Moodle без необходимости повторно вводить информацию
  • Если пользователь закладок или напрямую обращается к Moodle, они могут войти в систему прямо там

Мы уже создали его с помощью db auth (внешняя проверка подлинности базы данных), поэтому учетные записи с основного сайта также работают для Moodle, я просто не знаю, как заставить Moodle принимать существующие учетные данные и автоматически регистрировать пользователя.

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

Поскольку наш сайт 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'); } 

В основном, я разместил учетные данные для входа в сценарий входа в moodle, используя http_post_fields, хотя cURL также должен работать, проанализировал заголовки, чтобы получить куки Moodle, и затем настройте эти файлы cookie, используя базовый домен, а не более конкретный субдомен Moodle. Это может вызвать некоторые проблемы, если пользователь имеет существующий файл cookie из более конкретного субдомена, поэтому обязательно удалите все существующие файлы cookie с именем MoodleSession.