Мы добавляем 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.