To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Archiwum działu Ogólne (posty do 12.2008) - [Problem] Usuniety user;]

dadexix - 07-06-2007, 09:21
Temat postu: [Problem] Usuniety user;]
Witam mam taki problem... mój drugi admin pokucił sie z kuzynem a ten znając jego hasło usunął mu konto na forum i tu moje pytanie:
Wyczytałem że można zmienić ID na takie jak miał ten user starym kontem(był adminem więc wszedłem do logów a on dalej "był" linkiem więc mogłem kliknąć i zobaczyć w adresie) ale gdzies czytałem że ktos miał problem że posty nie przeszly na własność temu userowi czy to prawda bo jeśli tak to szkoda zachodu... i jeszcze kluczowe pytanie - trzeba zmienić to ID a po co mam szukać gdzie zmienić ID jeśli pisze temat i moge zapytać przy okazji;] więc gdzie to zmienić? - odrazu mówię że szukałem na tym forum i nie znalazlem odpowiedzi tylko dowiedziałem się że trzeba zmienić id..

Nawet nie pytajcie o BackUp'a bo i tak powiem że nie mam:)

Pozdrawiam
Dadexix

Radek - 07-06-2007, 10:29

jeżeli kasujesz usera to automatycznie jego posty zostają zoanczone jako skasowane. Musiałbyś zmienić id usera w bazie w tabeli phpbb_users. Teraz musisz znać stare id admina - zapytaniem update zmieniasz w tabeli posts poster_delete na 0 i poster_id na nowe id admina. Tak samo z teamtami = musisz zmienic zapytaniem update pole topic_poster na nowe id admina. Jeżeli czegoś nie rozumiesz to napisz, wrzuce Ci gotowe zapytania.
dadexix - 07-06-2007, 11:02

no przydały by się te zapytania bo nie do końca to dla mnie jasne...

Mówiłem że znam stare ID - 34

Z góry THX:)

Radek - 07-06-2007, 11:36

Wykonaj takie zapytanie:
Kod:
UPDATE phpbb_posts SET poster_id = NOWE_ID WHERE poster_delete =1 AND post_username = 'NICK SKASOWANEGO USERA';
UPDATE phpbb_topics SET topic_poster = NOWE_ID WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = NOWE_ID
);

I teraz tak:
PRZED wykonaniem tych zapytan, najlepiej zrob kopie bazy danych. Nie daje glowy ze nic sie nie zepsuje.
Ten nowy użytkownik nie może mieć jeszcze żadnego postu na forum.
2. Po tej operacji zrób synchronizacje.
PS: Stare id sie nie przyda - przyda sie stary nick usunetego usera. Pozmieniaj odpowiednie rzeczy w zapytaniu

dadexix - 09-06-2007, 08:24

Jak próbowałem pierwszy raz to nie działało ale to dlatego że jeden ' usunąłem dziś spraw2dziłem i chodzi cool'towo:)

Dzięks Ci bardzo:)

Grzesiek1 - 30-06-2007, 11:56

Oj jednak to zapytanie potrafi wywołać błędy.
Mianowicie po wykonaniu zapytania autorami niektórzych całkiem przypadkowych tematów stają sie ci których ID został wstawiony w zapytania.
Jest tak tylko na liście tematów bo jak już się wejdzie w temat to widać dobrze pierwszego postującego.
Wydaje mi się ze działo się tak tylko w tematach które były łaczone lub w jakiś sposób zmieniane.... jeszcze temu się postaram bliżej przyjrzeć to jak coś napisze.
Ale narazie polecam robić jednak backup bazy jeśli ktoś wykonuje te zapytanie.

[K] - 08-07-2007, 01:49

Witam!
Ostatnio zdarzyła sie u mnie taka sama sytuacja... nie bede jej opisywal, bo jest to zbedne.
Ciesze sie, ze znalazłem ten temat, bo jedno udalo mi sie naprawic, a własciwie dwie rzeczy.
Przywrócilem usera wykonalem INSERT INTO phpbb_users VALUES (i tu dane usera wziete z backupu), a to daje mi id i dane usera takie jakie mial przy rejestracji - wszystko ładnie konto jest.
Ale posty dalej przypisane 'anonimowi'... ok znalazłem ten temat i nie chcac zepsuc swojego forum calkiem, zaczałem eksperymentowac na dysku...
Nie chce mi cos wykonac to zapytanie które napisal RuseK.. a raczej nie do konca je wykonuje, tzn przypisuje posty, ale tematów juz nie.
Wykonuję dokladnie takie zapytanie
Kod:

UPDATE phpbb_posts SET poster_id = '6' WHERE poster_delete = '1' AND post_username = 'user';
UPDATE phpbb_topics SET topic_poster = '6' WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = '6'
);


i dostaje taki komunikat:
Kod:

Nie mogę wykonać: UPDATE phpbb_topics SET topic_poster = '6' WHERE topic_id IN ( SELECT topic_id FROM phpbb_posts WHERE poster_id = '6' )

Rozumiem, że cos zrobiłem zle i to pewnie bardzo zle. Okaze sie ze mala literówka albo brak spacji lub jedna za duzo (przywklem do tego) ale nie moge sie doszukac :/
Ktos widzi tu blad ? Prosze o pomoc dosc pilnie, bo przez to cale zamieszanie w modzie Top Posters pojawil mi sie niezbyt chciany user "Anonymous" :lol: nie mowiac juz o tym, ze na forum sie porobil balagan bo user jest usuniety (niby) a postuje :P
Z góry dziękuje.
Pozdrawiam


Oczywiscie wiadomo:
user - nick usera :P
6 - jego ID przed i po przywroceniu :P

dadexix - 09-07-2007, 18:04

Kod:
UPDATE phpbb_posts SET poster_id = '6' WHERE poster_delete = '1' AND post_username = 'user';
UPDATE phpbb_topics SET topic_poster = 6 WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = 6
);

(tu sobie zmień nick bo chyba nick'a user nie miał;>)
Spróbuj ten bez tych średników w drugim zapytaniu...
jesli już przywróciło posty to spróbuj samo to:
Kod:
UPDATE phpbb_topics SET topic_poster = 6 WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = 6
);

ja robiłem bez średników przy nowym ID - tylko pamiętaj wpisz tam ID nowego konta (bez żadnych postów)

no problem w tym że jeśli ten ktoś jest modem/adminem to te posty co zmieniał stają sie jego ale tylko na liście tamtów(wewnątrz tematów już nie)

[K] - 10-07-2007, 01:52

Wiem jakie ID i jakie nicki mam podawać, bo jak napisałem wyzej robie to wszystko w ramach testu na swoim dysku, aby calkiem nie zepsuć forum ;)
Mozna powiedziec, ze przeprowadzam symulacje tego co sie stało na forum ;)
Jednak nadal nie działa ;/ Zalezy mi na tym, bo niedlugo ma dojsc do polaczenia mojego forum z innym i nie chce zeby baza byla tak skopana i chyba naprawie to ręcznie :lol: a co tam ok 800 rekordów do edytowania ;p
Dzięki za odpowiedz. Jakby ktos jeszcze cos wiedzial na ten temat (co moze byc zle :| ) to poprosze o pomoc (niestety bez punktów :( ) bo jak widać nie moge dac w tym temacie :P
Pozdrawiam


Edit: [03:54] :P
Juz sobie poradziłem :P Co prawda nie ręcznie, ale mozna powiedzieć, że na 'piechote' po kolei pare zapytan dla kilkuset rekordów itd ;)

chechel - 25-11-2007, 20:31

Witam skorzystam z tego tematu zeby nie robic nie potrzebnego zamieszania na forum. Po naprawie uszkodzonego podsystemu dyskowego serwera baz danych mysql przez firmę udostępniającą nam serwer, znikło nam konto jednego użytkownika. Posty zostały, ale w ogóle nie ma tego użytkownika w spisie użytkowników, posty jednak które napisał zostały (konto GOŚĆ). W jaki sposób i czy w ogóle jest możliwość przywrócenia tego konta na nowo. Mam ID tego uzytkownika (425). Chciał bym na nowo odtworzyć tego użytkownika razem z jego wszystkimi postami. Prosił bym o pomoc.

[ Dodano: 11-12-2007, 22:16 ]
Z przywróceniem użytkownika usuniętego nie mam problemu wczytuje z kopii bazy(niestety starej) INTO `phpbb_users` konto zostaje przywrócone, synchronizuje i stosuje jeszcze zapytanie o przywrócenie postów i tematów

Kod:
UPDATE phpbb_posts SET poster_id = '425' WHERE poster_delete = '1' AND post_username = '***';
UPDATE phpbb_topics SET topic_poster = '425' WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = '425'
);


Wszystko jest ok. jeśli chodzi o użytkownika usuniętego przez Administratora. Mój problem polega na tym że ci użytkownicy nie zostali usunięci, są pokazywani jako konto Gość, a ich obecne ID = -1. Konto mogę wgrać tez z backupu, ale potem jak chce zastosować zapytanie do bazy to:

Kod:
UPDATE phpbb_posts SET poster_id = '425' WHERE poster_delete = '1' AND post_username = '***';# MySQL zwrócił pusty wynik (zero rekordów).
UPDATE phpbb_topics SET topic_poster = '425' WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = '425'
);# MySQL zwrócił pusty wynik (zero rekordów).


Teraz już za bardzo nie wiem co zrobić z tym fantem i liczę na waszą pomoc. Dziękuje za jakiekolwiek sugestie. Piotrek

joli - 13-12-2007, 23:33

To ilu w koncu tych uzytkownikow jest, bo ja nie bardzo rozumiem twoj post... Przywrociles jednego i dalej sa inni jako goiscie?
chechel - 14-12-2007, 15:29

joli napisał/a:
To ilu w koncu tych uzytkownikow jest, bo ja nie bardzo rozumiem twoj post... Przywrociles jednego i dalej sa inni jako goiscie?


Chciałem napisać że z normalnie wykasowanymi użytkownikami poprzez funkcje usuń nie mam problemu jeśli chce ich przywrócić. Natomiast tak jak napisałem po naprawie podsystemu dyskowego serwera baz danych mysql, trzem użytkownikom, którzy normalnie funkcjonowali na forum, znikły konta (i nie są traktowane one jako "Usuniety" tylko jako "Gość") i nie mogę ich przywrócić w naturalny sposób jak przywracałem normalnie usuniętych użytkowników. Mogę im ze starej kopii bazy na nowo stworzyć konto (poprzez zapytanie INTO 'phpbb_users'......) ale nie mogę na nowo dopisać do tego konta ich postów i tematów (z tego zapytania które RuseK powyżej napisał). Także konto pod ich starym ID jestem w stanie przywrócic ale dopisać do niego ich stare posty i tematy już nie. :/ . Piotrek

joli - 14-12-2007, 16:53

I nie dasz rady dopisac postów, bo wszystkie one maja jednakowe ID autora, czyli -1.

W tej sytuacji jedyne co mozesz zrobic, to cała baze sprzed awarii przywrocic.

Preston - 02-03-2008, 00:50

Witam
Mam podobny problem jak założyciel tematu.
Zrobiłem wszytsko wedle instrukcji ale mam problem z drugim zapytaniem czy to z poziomu PA cz przez phpmyadmin

po wykonaniu zapytania
Kod:
UPDATE phpbb_posts SET poster_id = '2' WHERE poster_delete =1 AND post_username = '******';

i synchronizacji posty przychodzą na usera-admina i w profilu widnieje ilość napisanych postów, ilość tematów natomiast 0

natomiast przy wykonywaniu drugiego zapytania
Kod:
UPDATE phpbb_topics SET topic_poster = '2' WHERE topic_id IN (
SELECT topic_id
FROM phpbb_posts
WHERE poster_id = '2'
);

forum zwraca bład
Kod:
Nie mogę wykonać: UPDATE phpbb_topics SET topic_poster = '2' WHERE topic_id IN ( SELECT topic_id FROM phpbb_posts WHERE poster_id = '2' );

bądź przez phpmyadmin daje taki komunikat
Kod:
MySQL zwrócił komunikat: 

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT topic_id
FROM phpbb_posts
WHERE poster_id = '2'
)'


Próbowałem ręcznie edytować tabele phpbb_topic ale przy którymś edytowanym temacie kasuje się pewna liczba postów i tematów na forum.

W sumie forum działa, tylko w podforach autor (admin) jest na czarno jak gdyby był usunięty dopiero po wejściu w temat wszystko wygląda normalnie.


Mam nadzieję, że stosunkowo jasno opisałem mój ból :)
Zaznaczam, że php jest dla mnie raczej czarną magią ;)
Pozdro

joli - 02-03-2008, 00:53

Preston, przywracasz usera o id2?
przeciez to ty?



Powered by phpBB modified by Przemo © 2003 phpBB Group