![]() #исправление_ошибки #внутренности_фанфикса #веб_разработка
Одно время я очень старался максимально экономить на спичках во благо быстродействия Фанфикса. Особенно я тогда считал, что надо минимизировать количество запросов к БД в каждом скрипте. Это имело ряд последствий, как положительных, так и не особо. Очередное наследие выплыло только что. В техподдержку пришёл вопрос о том, что пользователь случайно добавил себя соавтором в собственный фанфик и теперь не может ничего с этим сделать. Но ведь такая возможность была закрыта ещё в очень лохматые года! Ни соавтором, ни сопереводчиком, ни бетой нельзя добавить себя в шапку. Было одно время модно указывать самого себя бетой своего фанфика, мол я же проверял на ошибки, значит я бета. Стал проверять, как же так. Выяснилось, что для экономии запросов, проверку я сделал по вхождению имени юзера в текстовые строки "авторы/беты/переводчики", вместо того, чтобы сделать запрос к таблице с отношениями юзер_фанфик. Но! Если фанфик опубликован анонимно, то в строке "авторы/переводчики" хранится надпись "фанфик опубликован анонимно", а строка "беты" вообще пустая! Как уже понятно, у обратившегося автора фанфик был именно анонимным. Вот так автору удалось добавить себя в шапку. В работе с фанфиками в таком случае ему присваивались права соавтора, из-за чего он не мог фанфиком управлять. И при попытке отказаться от роли в фанфике, тоже происходила ошибка, так как все прочие скрипты сайта считают, что пользователь может быть указан в шапке фанфика исключительно единожды. Проблема исправлена. Проверка реализована нормально. Кто ничего не понял - не страшно :) вчера в 20:43
31 |