2013-04-15 20 views
7

Chúng tôi đang thêm Moodle vào trang web của chúng tôi (máy chủ khác, miền phụ khác nhau, nhưng cùng miền chính và các máy chủ được thiết lập để có thể giao tiếp với nhau) và những gì chúng tôi muốn có nó làm là:Moodle Chấp nhận Đăng nhập từ trang bên ngoài

  • người dùng truy cập trang web chính
  • người dùng đăng nhập
  • tài nhấp vào một liên kết đến Moodle
  • người dùng được tự động đăng nhập vào Moodle mà không cần phải nhập lại thông tin của họ
  • Nếu các dấu trang của người dùng hoặc truy cập trực tiếp vào Moodle, họ vẫn có thể đăng nhập trực tiếp tại đó

Chúng tôi đã thiết lập nó bằng cách sử dụng xác thực cơ sở dữ liệu bên ngoài để các tài khoản từ trang chính cũng làm việc cho Moodle. không có ý tưởng làm thế nào để có được Moodle chấp nhận các thông tin đăng nhập hiện có và tự động đăng nhập người dùng.

+0

bạn có thể vui lòng giúp tôi cách kết nối trang web bên ngoài của bạn với moodle..i đã thử rất nhiều ... nhưng tôi không thể làm được .. bạn có thể giúp tôi – user3663

Trả lời

9

Vì vậy, tôi đã có thể giải quyết vấn đề này và nghĩ rằng tôi sẽ chia sẻ giải pháp của tôi trong trường hợp bất kỳ ai khác có vấn đề tương tự trong tương lai.

Kể từ site Moodle của chúng tôi và trang web chủ yếu là trên cùng một tên miền, những gì tôi đã làm được trong kịch bản đăng nhập cho trang web chính của chúng tôi, tôi đã thêm đoạn mã sau:

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

Về cơ bản, tôi đăng các thông tin đăng nhập với kịch bản đăng nhập moodle sử dụng http_post_fields, mặc dù cURL cũng nên làm việc, phân tích cú pháp tiêu đề để lấy tập tin cookie Moodle, sau đó tự thiết lập các cookie đó bằng tên miền cơ bản thay vì tên miền phụ Moodle cụ thể hơn. Điều này có thể gây ra một số vấn đề nếu người dùng có cookie hiện tại từ tên miền phụ cụ thể hơn, vì vậy hãy chắc chắn xóa bất kỳ cookie hiện có nào có tên là MoodleSession.

+0

bạn đã sử dụng một tên miền hoặc hai miền phụ? –

+0

nếu nó nằm trên miền khác? – user3663