ошибка при редактировании "запись в таблице course"

ошибка при редактировании "запись в таблице course"

от Розалия Сибгатулина -
Количество ответов: 5
Всем салют!

Как возникает ошибка:
преподаватель заходит на нашем сайте в курс. используется frame , который авторизует пользователя в случае необходимости (создается хэш md5(rand()).md5(rand()); и делается запись в бд authusers)

так выглядит url у компонента frame

При редактирование блока у курса

 страница с курсом - значок редактирования курса

Идет ошибка в frame

Описание ошибки


Что уже было проверено:

Смотрела "поиск ошибочных внешних ключей" и для course исправила(точнее удалила записи в бд).

Если сначала залогиниться на сайте moodle, а потом на нашем сайте зайти без хэша - норм. Но не думаю что дело в хэшировании - т.к. авторизует и все верно отображается (пользователь и курс).

Стиль был другой - изменено на стандарт.


Скажите пожалуйста куда смотреть или в каком направлении плыть)

Сейчас пробую плыть в самой директории moodle со всем его содержанием - но там столько папок.... пока к истокам не пришла(

Еще вот думаю про id: у моего курса ид = 1594, а тут в запросе 6630. Это ли не ок?

используется версия moodle 2.7.2+
pgadmin

В ответ на Розалия Сибгатулина

Re: ошибка при редактировании "запись в таблице course"

от Розалия Сибгатулина -

Вот думаю: ведь если залогиниться отдельно - все ок, может ли дело быть таки с авторизацией?
Если да, то я рассматривала этот вариант - но не смогла понять в какой момент все может идти по откос:

$hash = null;
Yii::$app->session->set("moodle_authenticated", null);
$cdate = new DateTime();
$hash = md5(rand()).md5(rand());
pg_query_params($conn, 'insert...', [$id->person->person_login, $hash, $cdate->format("Y-m-d H:i:s")]);
Yii::$app->session->set("moodle_authenticated", 1);

Примерно так создается хэш
И пользователь ведь авторизуется (но увы коряво..

В ответ на Розалия Сибгатулина

Re: ошибка при редактировании "запись в таблице course"

от Розалия Сибгатулина -

Посмотрела таблицу с курсами и стала пробовать редактировать самые первые курсы и вот что получилось:
при редактировании 2го все ок
при редактировании 6,7,8,9 дало такую же ошибку с id (для 6-68, 7-85, 9-104 и 1594 - 6630)

В бд как раз таки нет записей с ид = 68,85,104 и 6630.

Но ПОЧЕМУ??? ведь запрос то идет для 6,7 итд. Причем когда запросила 2 - все ок и отображается правильно!

Вручную создала запись 6630 и открылся курс 1594.

Как это исправить?

В ответ на Розалия Сибгатулина

Re: ошибка при редактировании "запись в таблице course"

от Vadim Tabunshchik -
Изображение пользователя Developers
Но ПОЧЕМУ??? ведь запрос то идет для 6,7 итд.

isideauth.php - это самописный скрипт какой-то?

Если бы вы внимательно посмотрели line 6830 of\lib\accesslib.php:call to moodle_database ->get_record(), то увидели бы, что ищется контекст, а не курс, отсюда и несовпадение 6-68, 7-85, 9-104 и 1594 - 6630

У вас даже в isideauth.php вызывается context_couгse::instance (это таблица mdl_context), а в вашем скрипте где-то подставляется 6630 вместо id курса. Или наоборот, сложно сказать без просмотра кода isideauth.php

Как это исправить?

Не писать что-то «самопальное», тем более у вас какие-то данные передаются в открытом виде (почеркали в адресной строке). Вам нужен взлом сайта?

В ответ на Vadim Tabunshchik

Re: ошибка при редактировании "запись в таблице course"

от Розалия Сибгатулина -

Спасибо за ответ!

про isideauth.php - да это написанный файл, окей - буду его смотреть и искать (сделан не мной)
про ид 6-68, 7-85, 9-104 и 1594 - 6630 - начала смотреть таблицы и увидела связь с mdl_course_modules, поняла что это не выдуманное. Спасибо что помогли завершить эту мысль и поиски от куда берется сие число.

А про url - на первой картинке это из html, посмотреть код и у frame src содержит url включая хэш. Если это плохо как лучше всего его спрятать? (он же как параметр у тега, если буду вручную присваивать все равно будет отображаться)