MyBB.de Forum
Hab mich selber gelöscht.... - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: Hab mich selber gelöscht.... (/thread-8042.html)

Seiten: Seiten: 1 2


Hab mich selber gelöscht.... - Laello - 15.12.2007

.........und kein vorhandnes Backup.

Überall wo meine Beiträge sind steht "unregstriert".
Kann ich das irgendwie Rückgangig machen?


RE: Hab mich selber gelöscht.... - Samu - 15.12.2007

Kurz und knapp gesagt,

ohne Backup,

NEIN


RE: Hab mich selber gelöscht.... - Michael - 15.12.2007

Registriere dich neu im Forum und gib dir direkt in der Datenbank die nötigen Rechte. Wenn die Beiträge wieder dir zugeordnet werden sollen wird das sehr aufwändig, da du das auch alles manuell in der Datenbank neu zuordnen musst.


RE: Hab mich selber gelöscht.... - CoolRunner - 15.12.2007

Da mich das interessiert habe zum Testen einen neuen Account bei mir angelegt, diesen als Admin eingestellt, dann wieder gelöscht und einen neuen Nutzer angelegt.
Anschliesend bin ich wie folgt vorgegangen:

1.
neue uid feststellen (memberliste gucken)


2.
in phpmyadmin gehen
mybb_adminoptions
unterste uid editieren und eigene uid eintragen (permset auf 1 dahinter alles auf yes)
hintergrund: in dieser tabelle wird bei einer userlöschung nichts entfernt, also trägt man sich selbst nur da wieder ein wo man auch vorher schon stand)

3.
in die tabelle
mybb_users gehen und den neuen usernamen wählen und die zeile bearbeiten.
usergroup, displaygroup auf 4 umstellen
auch mit dem mysql befehl möglich:
PHP-Code:
UPDATE `mybb_usersSET `usergroup` = '4',
`
displaygroup` = '4' WHERE `uid` =neueuserid 


Jetzt ist man wieder Admin

4.
Um die Posts zu holen:
mybb_posts aufrufen
Befehl eingeben:
PHP-Code:
UPDATE `mybb_postsSET `uid` = 'neueuserid' WHERE `uid` = 0

Hintergrund:
In der Tabelle mybb_posts wird die uid eines gelöschten auf 0 gesetzt, so werden Dir alle Beiträge aller gelöschten User zugeordnet und du musst nachher nur noch die löschen die dir nicht gehören.

5.
Die Beitragsanzahl korrigieren:
Zunächte die Anzahl der Beiträge über folgendes SQL Statement ermitteln
PHP-Code:
UPDATE `mybb_usersSET `postnum` = (SELECT count(uid) as postnum FROM `mybb_postsWHERE uid neueuseridWHERE `uid` =neueuserid 

6.
Jetzt im Forum alle Beiträge löschen die einem nicht gehören (alternativ kann man auch wieder in der posts Tabelle 0 bei der uid eintragen)

FERTIG!

Beachte dabei das "neueuserid" mit Deiner neuen User-ID augetauscht werden muss, bevor du die entsprechenden Befehle ausführst.

@Michael: Ich hoffe ich habe dabei nichts übersehen, da ich das gerne als Mod oder so umsetzen möchte.


RE: Hab mich selber gelöscht.... - Michael - 16.12.2007

Dazu müsste auch noch bei allen Beiträgen der Benutzername in der Datenbank posts angegeben werden usw. Je nachdem wie viele Benutzer in deinem Forum gelöscht wurden, kann der Prozess eben sehr aufwändig sein.


RE: Hab mich selber gelöscht.... - CoolRunner - 16.12.2007

Ah ich verstehe jetzt das Problem.

Der Username bleibt in der Tabelle mybb_posts auch nach der Löschung erhalten, er müsste sich nur mit dem Namen registrieren den er vorher schon hatte.
Dann müsste man doch eigentlich nur das Query ändern.
Von
PHP-Code:
UPDATE `mybb_postsSET `uid` = 'neueuserid' WHERE `uid` = 0
In
PHP-Code:
UPDATE `mybb_postsSET `uid` = 'neueuserid' WHERE `uid` = AND username 'neuerusername' 



update: hab mal ein kleines Script draus gemacht:

1. Neu registrieren mit exakt den gleichen Usernamen den man vorher hatte
2. Script ins mybb root uppen und so aufrufen.
Aufruf restoreme.php?thepw=passwort
3. Script gleich wieder löschen
PHP-Code:
<?
define("IN_MYBB", 1);

require_once "./global.php";

## setup
$uid = 10;  // <= Eigene User-ID angeben
$sicherheits_passwort = ''; //<= Irgend ein Passwort für diese Datei festlegen
## setup ende

if(empty($sicherheits_passwort)){die ('Ohne Passwort wird das Script nicht ausgeführt!');}
if($_GET['thepw'] != $sicherheits_passwort){die ('Das Passwort war nicht richtig');}

echo 'Wieder Admin werden<br>';
$admin_restore_user = array(
'usergroup' => 4,
'displaygroup' => 4,
);
 $db->update_query(TABLE_PREFIX."users", $admin_restore_user, "uid='$uid'");
    
echo 'Admin-Optionen setzen<br>';
  $admin_restore_adminoptions = array(
        'uid'                    => $uid,
        'cpstyle'         => '',
        'notes'                  => '',
        'permsset'              => 1,
        'caneditsettings' => 'yes',
        'caneditann'      => 'yes',
        'caneditforums'   => 'yes',
        'canmodposts'     => 'yes',
    'caneditsmilies'  => 'yes',
    'caneditpicons'   => 'yes',
    'caneditthemes'   => 'yes',
    'canedittemps'    => 'yes',
    'caneditusers'    => 'yes',
    'caneditpfields'  => 'yes',
    'caneditugroups'  => 'yes',
    'caneditaperms'   => 'yes',
    'caneditutitles'  => 'yes',
    'caneditattach'   => 'yes',
    'canedithelp'     => 'yes',
    'caneditlangs'    => 'yes',
    'canrunmaint'     => 'yes',
    'canrundbtools'    => 'yes');
  $db->insert_query(TABLE_PREFIX.'adminoptions', $admin_restore_adminoptions);

echo 'Nutzername holen...';
$query = $db->simple_select(TABLE_PREFIX."users", "username", "uid='$uid'");
$username = $db->fetch_field($query, 'username');
if(!empty($username)){
echo ''.$username.'<br>Beitragszuordnung...<br>';

$admin_restore_posts = array(
'uid' => $uid,
);
$updp_qry = $db->update_query(TABLE_PREFIX."posts", $admin_restore_posts, "uid='0' && username = '$username'");


echo 'Anzahl der Posts wird ermittelt...';
$query = $db->simple_select(TABLE_PREFIX."users", "count(uid) as postnum", "uid='$uid'");
$postnum = $db->fetch_field($query, 'postnum');


echo $postnum.'<br>Beitragsanzahl wird geupdatet<br>';
# Beitragsanzahl updaten:
$admin_restore_postnum = array(
'postnum' => $postnum,
);

 $db->update_query(TABLE_PREFIX."users", $admin_restore_postnum, "uid='$uid'");
 
}


echo '<br><hr>Scriptende, bitte das Script jetzt sofort aus Sicherheitsgründen löschen.';    
?>

Was hälst du davon?

Habs bei mir getestet, haut hin.

update:
hier noch ein query mit dem man sieht welche datensätze in adminoptions keine zuordnung mehr haben, diese können dann gelöscht werden (muss aber nicht)
PHP-Code:
SELECT u.uida.uid as kein_usera. *
FROM mybb_adminoptions a
LEFT JOIN mybb_users u ON 
u.uid a.uid WHERE (a.uid) != '-1' && isnull(u.uid



RE: Hab mich selber gelöscht.... - Osamu - 03.01.2008

Mal ne blöde frage aber wie öffne ich mybb_users?


RE: Hab mich selber gelöscht.... - linwinman - 03.01.2008

Hallo Osamu,

an die Tabelle "mybb_users" gelangst du mit "phpMyAdmin" über das Web-Interface deines Hosters.


RE: Hab mich selber gelöscht.... - Osamu - 03.01.2008

@linwinman: Ich habe auf meinem Hoster Mysqldumper installiert. wie funktioniert es hier?


RE: Hab mich selber gelöscht.... - Michael - 03.01.2008

MySQLDumper ist zur Sicherung und zum Einspielen von Datenbanken. Es dient nicht zur Ansicht der Inhalte usw.