curl 登录其他网站时自动登录Moodle

aydmsdu9  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(219)

我想知道是否可以在登录其他网站后自动登录到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。

nfg76nw0

nfg76nw01#

你可以创建一个自定义的页面来登录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";
}


?>

创建该页面后,您可以传递用户名和密码进行登录。

ctrmrzij

ctrmrzij2#

不是这样的,Moodle需要在您的浏览器中设置一个会话,以便您登录。总的来说,您的要求听起来很奇怪--您到底想达到什么目的?
如果您希望避免用户登录两次,最好实现某种单点登录系统:

如果这些都不适合,你也可以创建自己的认证插件,详情请参见Moodle docs中的Authentication plugins和lib/authlib.php。

相关问题