登录到另一个站点时自动登录到 moodle


Automatically login to moodle when login to another site

我想知道是否可以在登录站点后自动登录到 moodle?我尝试使用 curl,但它似乎并没有真正起作用。

这是我的测试代码:

//set POST variables
$url = "http://moodlesite.com/login/index.php";
$fields = array(
    'username' => 'username',
    'password' => 'password'
);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);

我注意到在 moodle 登录系统后,他们再次将其重定向到 http://moodlesite.com/login/index.php?testsession=userid 在这种情况下他们需要 cookie。

您可以创建一个自定义页面来登录Moodle。

该页面的代码。

<?php
require('config.php');
$name=$_REQUEST['name'];
$password=$_REQUEST['password'];
$dashboard = $CFG->wwwroot;
$user = authenticate_user_login($name, $password);
if(complete_user_login($user))
{
echo "login";
}
else
{
   echo "not login";
}

?>

创建该页面后,您可以传递用于登录的名称和密码。

不是那样的,Moodle需要在浏览器中设置会话才能登录。一般来说,您的要求听起来很奇怪 - 您到底想实现什么?

如果您希望避免用户登录两次,则最好实现某种单点登录系统:

  • Moodle支持CAS作为标准(http://docs.moodle.org/25/en/CAS_server_(SSO) )
  • 其他附加身份验证插件(如 SAML 和 OAuth)也可用。

如果这些都不适合,您也可以创建自己的身份验证插件。有关详细信息,请参阅 Moodle 文档和 lib/authlib.php 中的身份验证插件。