2014-09-24 4 views
0

Я создаю сайт moodle. Я уже настраивал свои курсы с их конкретными ключами регистрации и т. Д. Но я хочу знать, в каком файле .php и где в этом файле (в файлах moodle), Moodle проверяет, соответствует ли введенный пользователем ключ регистрации тем, что я установил в качестве регистрационного ключа для курса ...Moodle php - где делает moodle проверяет, соответствует ли предоставленный ключ регистрации предварительно заданному ключу регистрации?

Благодарим за помощь!

ОБНОВЛЕНИЕ -------- Я сделал так, как предлагал Russell England, но когда я перехожу на страницу, где я набираю свой ключ для регистрации, страница не загружается или страница перенаправляется на мою домашнюю страницу moodle , Моя таблица, в которой хранятся ключи для регистрации, - user_enrolment_keys.

Вот обновленная функция проверки:

public function validation($data, $files) { 
    global $DB, $CFG, $USER; 

    $errors = parent::validation($data, $files); 
    $instance = $this->instance; 

    if ($this->toomany) { 
     $errors['notice'] = get_string('error'); 
     return $errors; 
    } 
     //--------Russell's suggestion-------------- 
if ($instance->password) { 
    $params = array('user_email' => $USER->email, 'course_id' => $instance->courseid,  'enrolment_key' => $data['enrolpassword']); 
    if (!$DB->record_exists('user_enrolment_keys', $params)) { 
     $errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); 
     return $errors; 
    } 
} 
    //What I tried last (did not work either)... 
    /*$uemail = $USER->email; 
    $userscoursekey = 'testing'; 

    $connecty = mysqli_connect("localhost", "...", "...", "..."); 
    mysql_select_db('user_enrolment_keys', $connecty); 

      $var2 = $instance->courseid; 
    $resulty = mysqli_query($connecty, "SELECT * FROM user_enrolment_keys WHERE user_email='$uemail' AND course_id='$var2'"); 
    $numrows = $resulty->num_rows; 

    if($numrows > 0) 
    { 
     while($row = mysqli_fetch_assoc($resulty)) 
     { 
      $userscoursekey = $row['enrolment_key']; 
     } 
    } 


    $instance->password = $userscoursekey; 

    my_sqli_close($connecty); //Close the database connection.*/ 

    if ($instance->password) { 
     if ($data['enrolpassword'] !== $instance->password) { 
      if ($instance->customint1) { 
       $groups = $DB->get_records('groups', array('courseid'=>$instance->courseid), 'id ASC', 'id, enrolmentkey'); 
       $found = false; 
       foreach ($groups as $group) { 
        if (empty($group->enrolmentkey)) { 
         continue; 
        } 
        if ($group->enrolmentkey === $data['enrolpassword']) { 
         $found = true; 
         break; 
        } 
       } 
       if (!$found) { 
        // We can not hint because there are probably multiple passwords. 
        $errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); 
       } 

      } else { 
       $plugin = enrol_get_plugin('self'); 
       if ($plugin->get_config('showhint')) { 
        $hint = core_text::substr($instance->password, 0, 1); 
        $errors['enrolpassword'] = get_string('passwordinvalidhint', 'enrol_self', $hint); 
       } else { 
        $errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); 
       } 
      } 
     } 
    } 

    return $errors; 



    // END DEFAULT BLOCK 
} 

ответ

0

Проверенная в пользовательской самостоятельной форме регистрации

В проверке функции() в файле /enrol/self/locallib.php он проверяет, пароль совпадает и отображает ошибку, если нет.

UPDATE:

я бы, вероятно, сделать это в функции проверки

Добавьте переменную $ USER в верхнем

global $DB, $CFG, $USER; 

Затем проверьте, если комбинация пользователь, конечно, и пароль существует в ваш новый список лицензий;)

$params = array('userid' => $USER->id, 'courseid' => $instance->courseid, 'password' => $data['enrolpassword']); 
if (!$DB->record_exists('local_licence_table', $params)) { 
    $errors['enrolpassword'] = get_string('passwordinvalid', 'enrol_self'); 
    return $errors; 
} 
+0

Спасибо! Я попробую и вернусь ... В принципе, я создал новый php-файл (который будет показан после того, как человек заплатит за мой курс), который создает новый ключ для регистрации, характерный для этого пользователя, и этот курс - во избежание мошенничества зачисления с одним и тем же ключом регистрации. Поэтому в проверке функции я пытаюсь получить ключ, назначенный пользователю (после оплаты), и проверить, соответствует ли это введенному ключу ... Любые предложения о том, как я должен получить пароль из этой базы данных, которую я создал в проверка функции? Спасибо за вашу помощь FAST! –

+0

обновил ответ –

+0

Привет, мистер Рассел, пожалуйста, помогите мне с обновлением ... –

Смежные вопросы