Вход из внешнего скрипта с использованием базы данных Moodle

Я не пытаюсь создать плагин для мудла, я просто создаю внешний скрипт, который проверяет учетные данные, которые пользователь вводит в форму, по пользовательской таблице в базе данных мудла.

Прямо сейчас в сценарии имя пользователя совпадает, а пароль — нет. Я прочитал некоторую информацию о мудле с использованием соления, но мне все еще не повезло.

Я использую что-то подобное для проверки пароля.

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

Любые предложения будут ценны.


person richard008    schedule 28.01.2013    source источник
comment
Не могли бы вы попробовать войти в свою базу данных и запустить эту команду? select * from user where password=MD5('your-passwordsalt'); и посмотрим, что получится? Вы уверены, что имя столбца user, а не mdl_user?   -  person franzlorenzon    schedule 29.01.2013


Ответы (2)


Я проверил код, он работает нормально, у меня есть некоторые возможности, которые вы делаете неправильно -

  1. Убедитесь, что строка $salt такая же, как в файле config.php($CFG->passwordsaltmain).
  2. Убедитесь, что пароль не сбрасывается напрямую из базы данных mysql без кода Moodle.
  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>

Спасибо

person Jitendra Gaur    schedule 29.01.2013

Вам следует использовать API-интерфейс аутентификации moodle и связанные с ним функции. auth_user_login ($ имя пользователя, $ пароль)

Возвращает: true, если имя пользователя и пароль работают, и false, если нет.

person iankit    schedule 08.11.2014