我不是在尝试为moodle创建一个插件,我只是创建一个外部脚本,该脚本根据moodle数据库中的用户表检查用户在表单中输入的凭据。
现在在脚本中,用户名匹配,但密码不匹配。我已经阅读了一些关于使用盐渍的moodle的信息,但我仍然没有任何运气。
我正在使用这样的东西来检查密码。
$salt = 'random string of chars found in config file';
$password = md5($_POST['password'].$salt);
$query = "SELECT * FROM `user` WHERE password = '$password';";
...
任何建议将不胜感激。
我已经
测试了代码,它对我来说工作正常,有一些可能性可能是你做错了 -
- 确保$salt字符串与config.php($CFG->passwordsaltmain)文件中的字符串相同。
- 确保密码不会在没有 moodle 代码的情况下直接从 mysql 数据库重置。
- 查询中缺少表前缀。
我的代码 -
<?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。