Как восстановить удаленный аккаунт..

Started by gri, June 28, 2005, 04:47:08 PM

Previous topic - Next topic

gri

{
>> http://www.simplemachines.org/community/index.php?topic=36360.msg293072#msg293072
}

Quote from: Astrogallery.net http://smf.com.ru/forum/index.php?topic=30.msg98#msg98
Итак, по поводу возможности восстановления аккаунта.

Допустим, имеем:
1. Удалившегося пользователя, например, "gri"
2. Его сообщения после удаления отображаются под ником Гостя gri.

Нужно:
1. Зарегистрировать новый аккаунт с тем же ником
2. Прикрепить прошлые сообщения к новому аккаунту

Сделать это не так трудно, как кажется.
Как известно, около слова "Гость" в сообщении отображается ник гостя,
а в базе данных он числится под индексом "posterName".
Вот им-то мы и воспользуемся.

Каждый пользователь имеет номер своего профиля.
Именно принадлежность сообщения к номеру ID_MEMBER
делает сообщение из гостевого.. пользовательским,
приписывая сообщение конкретному участнику.

Движок SMF устроен так, что при удалении аккаунта участника,
все его сообщения приобретают ID_MEMBER = 0 (гость).

Итак, у нас был старый пользователь под старым ником gri
и новый участник с тем же ником, но с новым номером 22.
После удаления аккаунта ID_MEMBER в сообщениях стал равен нулю,
но posterName остался равен "gri".

Нужно запустить MySQL-запрос,

ЕСЛИ posterName == "gri", ТО ИЗМЕНИТЬ ID_MEMBER НА "22".

Команда сама найдёт нужные строчки и изменит номер с 0
на действительный номер нового аккаунта.

На языке SQL эта команда выглядит так:

UPDATE `smf_messages` SET `ID_MEMBER` = '22' WHERE `posterName` = 'gri'

Аналогичную команду можно запустить и для таблицы "smf_instant_messages",
ГДЕ fromName == "gri", А ID_MEMBER_FROM == "22".

Только в этой таблице при удалении аккаунта
приватные сообщения не приобретают новый номер "0",
а остаются с прежним номером. Но разницы для нас нет.


gri

Quote from: Astrogallery.net on June 28, 2005, 04:47:08 PM
UPDATE `smf_messages` SET `ID_MEMBER` = '22' WHERE `posterName` = 'gri'

Astrogallery.net,
как могло случиться, что одна строка в Вашем сообщении
оказалась другого цвета ? Почему ? Зачем ?
Вы различаете цвета ?

Astrogallery

Строка, выделенная синим цветом - готовая команда, которую можно запустить в SQL-запросе. Она верна и проверена в работе. Синим цветом я выделяю код программы, а обычным чёрным цветом - пояснения к коду программы. В этом был ваш вопрос?

gri

Quote from: Astrogallery.net on June 29, 2005, 07:35:05 AM
Строка, выделенная синим цветом - готовая команда, которую можно запустить в SQL-запросе. Она верна и проверена в работе. Синим цветом я выделяю код программы, а обычным чёрным цветом - пояснения к коду программы. В этом был ваш вопрос?

Да, спасибо. Я так и догадывался,
что Вы выделили другим цветом
наиболее важный фрагмент своего сообщения.

Тогда я не могу понять,
почему Вы, отвечая на мое сообщение,
проигнорировали наиболее существенный фрагмент
моего сообщения,
выделенный ~таким же другим~ цветом

http://agreetogri.newmail.ru/zakritaya-rana.htm .

Не могли бы Вы учесть мою ~голубую мечту~..
и поправить текст Вашей
безусловно очень полезной инструкции ?

А прежнюю инструкцию я всё же настоятельно прошу Вас
удалить из моей темы на smf.com.ru,
а то, знаете, я опасаюсь, что admin.. с его-то логикой,
ухватится за ~готовую команду~ и выполнит
до моего подтверждения правильности изложенной Вами инструкции
  применительно к моему случаю..

принципиально не то, о чём я его попросил.

gri

Quote from: gri on June 29, 2005, 09:51:01 AM
а то, знаете, я опасаюсь, что admin.. с его-то логикой,
ухватится за ~готовую команду~ и выполнит
принципиально не то, о чём я его попросил.

Astrogallery,
вот и ключевую тему admin переместил уже в архив..
как будто проблема уже решена

http://agreetogri.newmail.ru/plevok-v-arhive.htm .

Успевает же..
несмотря на сессию.

Может быть, все сообщения надо было писать другим цветом ?

Astrogallery

QuoteДа, спасибо. Я так и догадывался,
что Вы выделили другим цветом
наиболее важный фрагмент своего сообщения.
Не самый важный фрагмент, а код программы. Для профессионалов более важным фрагментом может быть логика моих рассуждений.

QuoteТогда я не могу понять,
почему Вы, отвечая на мое сообщение,
проигнорировали наиболее существенный фрагмент
моего сообщения,
выделенный ~таким же другим~ цветом
Если вы про "прежний ID_Member", ну так и запустите эту функцию, указав нужный вам ID. Тогда и нового пользователя после удаления переведите на прежний ID.

gri

Quote from: Astrogallery.net on June 29, 2005, 01:00:39 PM
Если вы про "прежний ID_Member", ну так и запустите эту функцию, указав нужный вам ID.

Astrogallery,
Вы всё правильно говорите,
только не договариваете -

что значит ~запустите~..
без доступа к cPanel ?

Astrogallery

Во-первых, вы путаете. cPanel - лишь один из вариантов управления сервером, также как и движков форума тоже много, не только один SMF. Среди панелей можно привести DirectAdmin, H-SPHERE, Plesk и многие другие. В каждой из них есть поддержка дополнительной программы - phpMyAdmin, которая нам и требуется.

Во-вторых, чтобы восстановить удалённый аккаунт, нужно действительно быть администратором базы данных форума (иметь к ней доступ через cPanel или как-то иначе). А находясь в режиме phpMyAdmin можно уже запускать команды и делать с базой данной форума всё, что душа пожелает. Причём, работа это очень кропотливая, следственно, можно сделать вывод, что администратор действительно за это займётся только в том случае, если удалившийся человек ему дорог. В противном случае у него нет много времени, чтобы возиться так с каждым, скажем, из 5000 пользователей.

Команду нужно запустить, введя нужные значения ID_Member и posterName. Допустим, новый пользователь зарегистрировался под новым ID_Member номером. Вы лазите в таблицу "smf_members", исправляете там участнику ID_Member на старый, и в команде указываете, соответственно, старый ID-Member.

Как выглядит phpMyAdmin и куда команду вводить, возможно, вам поможет этот рисунок - http://my.astrogallery.net/phpMyAdmin.JPG

gri

Quote from: Astrogallery.net on June 29, 2005, 05:23:00 PM
Во-вторых, чтобы восстановить удалённый аккаунт, нужно действительно быть администратором базы данных форума (иметь к ней доступ через cPanel или как-то иначе).
Причём, работа это очень кропотливая, следственно, можно сделать вывод, что администратор действительно за это займётся только в том случае,

Astrogallery,
спасибо за подробные пояснения.
Они наверняка будут полезны многим читателям,
которые захотят разобраться с назначением программы SMF.

Из того, что Вы пояснили, мне пока в общих чертах всё понятно.
Про cPanel, как один из вариантов доступа к phpMyAdmin и SQL Базе Данных,
я говорил потому, что разработчики (в частности, [Unknown])
упоминают про cPanel и, кроме того,
cPanel установлена на сервере c форумом - http://www.smf.com.ru/cPanel.php .

Именно на обстоятельство недостаточной защищенности пользователей
от последствий удаления аккаунта по любым мотивам
я и обратил, как мог, внимание пользователей продукта SMF
и его разработчиков.

Следует согласиться, что на практике при нынешнем наборе свойств SMF
удаление аккаунта - это необратимая операция или крайне тяжелая
несмотря на кажущуюся внешнюю простоту.

Несмотря на серьезность последствий установка

"Require admin approval when member deletes account" [ ]

по умолчанию выключена
и разрешает пользователям удалять свой аккаунт,
в том числе по неосторожности или неосведомленности.

В то же время моя тема с предостережением,
о копии которой я уже упоминал здесь 

http://agreetogri.newmail.ru/plevok-v-arhive.htm ,

только что удалена admin-ом с форума smf.com.ru .

Увы, это доказывает истинность моих предположений и выводов.

И, значит, программу надо не только переводить,
но и строго проверять на пригодность её применения
в человеческом обществе..
и серьезно дорабатывать прежде чем.

Во избежание жертв модерации.

Advertisement: