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

时间:2013-01-28 16:40:03

标签: php encryption passwords moodle

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

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

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

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

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

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

    <?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>
    

    谢谢

答案 1 :(得分:1)

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

返回:如果用户名和密码有效,则返回true;如果不是,则返回false。