1

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

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

我正在使用类似的东西来检查密码。

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

任何建议将不胜感激。

4

2 回答 2

2

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

  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>

谢谢

于 2013-01-29T18:00:54.193 回答
1

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

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

于 2014-11-08T15:08:50.973 回答