使用 moodle 数据库从外部脚本登录


Logging in from an external script using moodle database

我不是在尝试为moodle创建一个插件,我只是创建一个外部脚本,该脚本根据moodle数据库中的用户表检查用户在表单中输入的凭据。

现在在脚本中,用户名匹配,但密码不匹配。我已经阅读了一些关于使用盐渍的moodle的信息,但我仍然没有任何运气。

我正在使用这样的东西来检查密码。

$salt = 'random string of chars found in config file';
$password = md5($_POST['password'].$salt);
$query = "SELECT * FROM `user` WHERE password = '$password';";
...

任何建议将不胜感激。

我已经

测试了代码,它对我来说工作正常,有一些可能性可能是你做错了 -

  1. 确保$salt字符串与config.php($CFG->passwordsaltmain)文件中的字符串相同。
  2. 确保密码不会在没有 moodle 代码的情况下直接从 mysql 数据库重置。
  3. 查询中缺少表前缀。

我的代码 -

<?php
    if ($_POST['submit']) {
        //your host detail
        $link = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
        //your dbname
        mysql_select_db('moodle_23') or die(mysql_error()); 
        $salt = 'MG.b.;w>0B)3c.^:OqDd#?^h'; //change with your salt
        $password = md5($_POST['password'] . $salt);
        $query = "SELECT * FROM mdl_user WHERE username = '{$_POST['username']}' AND password = '$password'";
        $result = mysql_query($query) or die(mysql_error());
        echo '<pre>';
        while ($row = mysql_fetch_assoc($result)) {
            print_r($row);
        }
    }
    ?>
    <form action='' method="post">
        <p>Username = <input type="text" name ="username"/></p>
        <p>Password = <input type="password" name ="password"/></p>
        <input type="submit" value="submit" name="submit"/>
    </form>

谢谢

您应该使用 moodle 的身份验证 API 及其相关函数。 auth_user_login ($username, $password)

返回 :如果用户名和密码有效,则为 true,如果用户名和密码无效,则返回 false。