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