News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

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

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: