1

实际上,我正在尝试将我的系统与 moodle 集成。我需要一个应该像这样工作的功能:

  1. 登录我的系统(与moodle db中的用户名相同)
  2. 用户决定切换到moodle,因此他单击脚本链接(在moodle服务器上-两个系统都在其他服务器上),然后我从数据库中获取有关我要登录的用户的所有数据(数据库中的整行).. .
  3. 因为密码是加密的,所以我现在无法使用 post 参数重定向到登录表单,因为它不起作用。

有没有什么好的和简单的方法来实现这个目标?我有用户名和散列并最终散列密码。

我正在使用moodle 1.9(系统要求)。

提前感谢您的帮助,

问候大卫

4

2 回答 2

1

SSO 和 Moodle 1.9 的一些注意事项:

  • 如果你准备好花几个小时,你可以使用 Mnet:http ://docs.moodle.org/en/MNet
  • 还有一种 phpcas 身份验证方法可以做你想做的事:http ://docs.moodle.org/en/CAS_server_(SSO )
于 2011-05-30T09:57:42.260 回答
0

这是我所做的

1 -我启用了(外部数据库)身份验证插件

2 -在文件夹中创建这个 php 文件 (my/moodle/root/login/)

    <?php
    require('../config.php');
    $username =  $_GET['id'];// 's3265';
    $serverName = 'moodle' ;
    $connectionInfo = array( "UID"=>"mssqlUser","PWD"=>"********","Database"=>"external_Database");
//I am using MSSQL2008
        echo '<form action="' . $CFG->wwwroot . 
             '/login/index.php" method="post" name="login" id="form">';

    $conn = sqlsrv_connect( $serverName, $connectionInfo );

    if (!$conn)
       {die('Could not connect: ' . sqlsrv_error());}
    $result = sqlsrv_query($conn , "SELECT * FROM Users WHERE LoginID = '" . $username . "'");

    var_dump($conn, $result);
    while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
    {
            echo  $row['FName'] . " " . $row['LName'] . ", please wait. . .";
        $password =  $row['LoginPassword'];
    }
    sqlsrv_close($conn);
?>
        <p><input type="hidden" name="username" value="<?php echo $username ?>">
                <p><input type="hidden" name="password" value="<?php echo $password ?>">

        <script language="JavaScript">
             function Validate(){document.login.submit();}

             Validate();
        </script>

</form>

3 -假设您命名了 rhr 文件(test.php) 现在您的链接(http://your_domain/moodle/login/test.php?id=yourusername) 在我看来应该可以正常工作,但是 . . . 我不关心安全。. . 如果你这样做。. . 您必须为此添加一些内容

于 2013-04-16T05:37:00.327 回答