Hallo,
ich möchte mein altes Board (3.0.x) verwerfen und dafür ein komplett neues Board (3.1.x) errichten.
Mir stellt sich jetzt eine ganz besondere Anforderung: ich muss alle User aus dem alten Board ins neues Board überführen. Ich werde dazu ein eigenes PHP-Script schreiben.
Damit ich keine Fehler mache, habe ich ein paar Fragen:
Wenn ich im neuen Board einen neuen User anlege, muss ich nur folgende 2 Tabellen füllen:
- phpbb_users
- phpbb_user_group
Ist das richtig? Alle User werden übrigens in die Standard-Gruppe hinterlegt.
Welche Bedeutung hat in der Tabelle phpbb_users die Spalte "user_form_salt"? Kann ich das Feld einfach leer lassen?
Welchen Algorythmus muss ich verwenden, um das Passwort bilden zu können? Wenn ich ein- und derselbes Passwort zwischen (3.0.x) und (3.1.x) vergleiche, so sehe ich in der Datenbank unterschiedliche Hashwerte. Daraus folge ich, dass im neuen Board ein neuer Algorythmus genutzt wird. (mir ist klar das eine ENTschlüssung nicht möglich ist, mir geht es nur um die VERschlüsselung)
Ist es problematisch, wenn ich in der Tabelle phpbb_users eine eigene Spalte anlege? (unabhängig von den Profilfeldern)
Neuinstallation [3.1.x] -> User von [3.0.x] importieren
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
Das reicht nicht. Du brauchst mehr Daten, selbst wenn du keine Beiträge übernehmen willst:
Alternativ kannst du auch einfach ein Update machen und vorher sämtliche Beiträge mit automatischem Pruning löschen (z.B. indem du das Board so einstellst, dass Beiträge älter als 1 Tag automatisch entfernt werden). Das sollte dir eigentlich ein ähnliches resultat geben.
Du kannst problemlos eine neue Spalte in der users Tabelle anlegen. Das machen auch einige Mods / Erweiterungen.
- Die Gruppen haben ggf. andere IDs, d.h. wenn du die user_groups Tabelle übernimmst dann musst du auch die Gruppentabelle haben. Wenn nicht, musst du den Inhalt der user_groups Tabelle neu erzeugen.
- Die Standardgruppe in der users Tabelle hängt an dem selben Problem, weshalb du auch nicht einfach die Groups Tabelle weglassen kannst
- In der Config Tabelle sind Daten gespeichert, die z.B. für die Passwortverschlüsselung wichtig sind. Ohne diese Daten werden sämtliche Passwörter ungültig. Der Algorithmus ist meine ich gleich, aber jedes Board erzeugt bei seiner Erstellung andere Zufallswerte als Salt für den Hash.
- Benutzerdefinierte Profilfelder sind nicht in der users Tabelle sondern separat
- ... Vermutlich gibt es noch mehr an das ich gerade nicht denke. Siehe auch https://wiki.phpbb.com/Tables Die Liste ist aber glaube ich nicht vollständig.
user_add
Funktion aus der includes/functions_user.php Die Benutzerdaten kannst du zum Teil beim anlegen einfach mit angeben, ansonsten kannst du die Daten die du zusätzlich übernehmen willst auch nachträglich per SQL Befehl überschreiben, aber das garantiert dir schon mal, dass die angelegten User vollständig in der DB vorhanden sind. Alternativ kannst du auch einfach ein Update machen und vorher sämtliche Beiträge mit automatischem Pruning löschen (z.B. indem du das Board so einstellst, dass Beiträge älter als 1 Tag automatisch entfernt werden). Das sollte dir eigentlich ein ähnliches resultat geben.
Du kannst problemlos eine neue Spalte in der users Tabelle anlegen. Das machen auch einige Mods / Erweiterungen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
In meinem alten Board gab es nur eine Benutzergruppe. Ich habe im neuen Board testweise einen neuen User registriert (über die ganz normale Oberfläche im Frontend). In der sql-Tabelle sehe ich jetzt die ID der Gruppe und diese ID würde ich nun für alle anderen Usern, die ich über ein PHP Script anlege, übernehmen. Das müsste doch klappen, oder?gn#36 hat geschrieben:Das reicht nicht. Du brauchst mehr Daten, selbst wenn du keine Beiträge übernehmen willst:
- Die Gruppen haben ggf. andere IDs, d.h. wenn du die user_groups Tabelle übernimmst dann musst du auch die Gruppentabelle haben. Wenn nicht, musst du den Inhalt der user_groups Tabelle neu erzeugen.
- Die Standardgruppe in der users Tabelle hängt an dem selben Problem, weshalb du auch nicht einfach die Groups Tabelle weglassen kannst
- In der Config Tabelle sind Daten gespeichert, die z.B. für die Passwortverschlüsselung wichtig sind. Ohne diese Daten werden sämtliche Passwörter ungültig. Der Algorithmus ist meine ich gleich, aber jedes Board erzeugt bei seiner Erstellung andere Zufallswerte als Salt für den Hash.
Zum Thema "Passwörter ungültig": ich könnte im alten Board eine Oberfläche schaffen, auf der die User ihren Account fürs neue Board aktivieren müssen (mit Eingabe des alten Passwortes). Dann hätte ich die Passwörter. Doch mit welcher Funktion und mit welchem Key verschlüsselt man?
- Scanialady
- Supporter
- Beiträge: 1994
- Registriert: 23.02.2009 16:29
- Wohnort: Velbert (NRW)
- Kontaktdaten:
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
in der Zeit, die du für so umfangreiche Planungen und Diskussionen zur Übernahme einzelner Felder, für die Programmierung, für das Testen verwendest - da hättest du die Konvertierung nach dem hier empfohlenen Muster bereits mehrfach durchgeführt
Aus irgendeinem Grund sträubt man sich hier gegen eine Anleitung der einfachen Übernahme der Tabellenwerte von Benutzern und Foren. Die Frage wurde schon vor Monaten nicht beantwortet.

Aus irgendeinem Grund sträubt man sich hier gegen eine Anleitung der einfachen Übernahme der Tabellenwerte von Benutzern und Foren. Die Frage wurde schon vor Monaten nicht beantwortet.
*Wenn von etwas kein Backup existiert, dann ist es nicht wichtig.
*Der Unterschied zwischen "Gast" und "Gastronom" liegt nicht nur in ein paar Buchstaben.
*Wenn das Auto in die Werkstatt soll, ist "Hier geht nix". - "Äh? Was geht denn nicht?" - "Ja NIX!" wenig hilfreich.
*Der Unterschied zwischen "Gast" und "Gastronom" liegt nicht nur in ein paar Buchstaben.
*Wenn das Auto in die Werkstatt soll, ist "Hier geht nix". - "Äh? Was geht denn nicht?" - "Ja NIX!" wenig hilfreich.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
@Mylady: Ich schreibe dazu aus einem ganz einfachen Grund keine Anleitung: Dafür müsste ich das selber mal in allen Details durchführen und dafür sehe ich den Sinn gerade nicht (und selbst wenn jetzt jemand einen Grund schreibt, der für ihn Sinn ergibt: Für mich ist das trotzdem kein sinnvoller Einsatz meiner Zeit). Aus dem selben Grund schreibe ich keinen Konverter von Forumsoftware X auf phpBB: Ich habe kein Board das auf Forumsoftware X läuft und auch wenn ich insgesamt Stunden, Tage, Wochen und inzwischen sicherlich in Summe Monate mit dem Support hier verbringe habe ich keine Lust, etliche Stunden in ein einzelnes Problem zu investieren.
Eine normale Konvertierung mit vorherigem oder anschließenden Löschen der Beiträge, Foren und Rechte ist im Ergebnis eigentlich das gleiche, aber dabei geht nicht so viel schief. Das ist genau das gleiche wie wenn man von einem phpBB 3.0.14 auf ein anderes umziehen will und dabei nur die User mitnehmen möchte.
Was die Passwörter angeht kannst du denke ich auch einfach den Salt in der Config Tabelle aus dem alten Forum übernehmen, dann bleiben die Passwörter auch gültig. Ansonsten schau mal in den Ordner
Ich habe mir jetzt aber noch mal einen genaueren Blick auf die Passworthashing Methode gegönnt: Offenbar steht alles was wirklich benötigt wird in der Passwortspalte der Usertabelle. Dort ist auch der Seed für den Hash. Default Driver sollte normalerweise
Heißt aber: Die Configtabelle dürfte den Passwörtern wohl eher nicht im Weg stehen. Die user_groups Tabelle würde ich nicht übernehmen sondern selber erzeugen auf Basis deiner Gruppen. In deinem Fall also vermutlich einfach alle User in die Gruppe "Registrierte Benutzer", sonst nichts. Beachte, dass phpBB komische Dinge tun könnte, wenn die Standardgruppen nicht existieren, insbesondere registrierte Benutzer, Gäste und kürzlich registrierte Benutzer könnten problematisch sein, wenn sie fehlen, da etliche Standardfunktionen irgendwelche Dinge mit diesen Gruppen tun. In wiefern globale Moderatoren und Administratoren problematisch sind weiß ich nicht genau. Das heißt aber nicht, dass irgendwelche User in den Gruppen drin sein müssen, von daher musst du die Gruppenzugehörigkeiten nicht zwingend übernehmen. Der Gastbenutzer muss auch immer die selbe ID haben, aber das ist bei phpBB 3.0.x und 3.1.x gleich, da kannst du also nicht viel falsch machen, wenn du die User übernimmst.
Eine normale Konvertierung mit vorherigem oder anschließenden Löschen der Beiträge, Foren und Rechte ist im Ergebnis eigentlich das gleiche, aber dabei geht nicht so viel schief. Das ist genau das gleiche wie wenn man von einem phpBB 3.0.14 auf ein anderes umziehen will und dabei nur die User mitnehmen möchte.
Was die Passwörter angeht kannst du denke ich auch einfach den Salt in der Config Tabelle aus dem alten Forum übernehmen, dann bleiben die Passwörter auch gültig. Ansonsten schau mal in den Ordner
phpbb\passwords
. In der Datei manager.php
werden die verschiedenen unterstützten Algorithmen angewendet. Das sind ne ganze Menge, die Methode check
überprüft die Gültigkeit eines Passworts anhand der Benutzerdaten aus der DB. Die Methode ist ganz gut kommentiert, du wirst dich trotzdem ein wenig von Methode zu Methode hangeln müssen. Es wird, wenn ich das mit einem Blick grob richtig einschätze, offenbar mit einem Prefix am Hash gespeichert, um welchen Algorithmus es sich handelt. Dann wird dieser Algorithmus aus dem Ordner phpbb\passwords\driver
geladen und benutzt um das Passwort zu prüfen. Das kann allerdings bei phpBB 3.0.x anders gespeichert sein und beim Datenbankupdate umgerechnet werden (solange der Algorithmus gleich bleibt, ist ja egal ob man einen Prefix an den Hash macht oder das z.B. in einer separaten Spalte speichert).Ich habe mir jetzt aber noch mal einen genaueren Blick auf die Passworthashing Methode gegönnt: Offenbar steht alles was wirklich benötigt wird in der Passwortspalte der Usertabelle. Dort ist auch der Seed für den Hash. Default Driver sollte normalerweise
salted_md5
sein, wenn du von einem phpBB 3.0.x kommst, mit Fallback für reines md5 für upgrades von phpBB 2 (also, wenn du mal ein Passwort ersetzen musst kannst du notfalls wenn ich das richtig sehe einfach dessen md5 Wert in das Passwortfeld schreiben). Zumindest bei phpBB 3.1.x steht der Salt bei jedem User mit in der Passwortspalte. Nur mal nebenbei bemerkt ergibt sich durch die Programmierung eines eigenen Drivers für dich auch die Möglichkeit, z.b. eine andere Hashingmethode von einem anderen Board zu übernehmen. Hierzu musst du lediglich das phpbb\passwords\driver\driver_interface
umsetzen und die neue Klasse in der Konfigurationsdatei deiner Erweiterung bekanntgeben (tag: passwords.driver
, siehe config/password.yml
). phpBB 3.1.x hat diese alte Methode als "Legacy" markiert und ersetzt das Passwort beim Login automatisch durch einen besseren Hash. Jeder User kann theoretisch sein Passwort mit einer anderen Hashingmethode gespeichert haben.Heißt aber: Die Configtabelle dürfte den Passwörtern wohl eher nicht im Weg stehen. Die user_groups Tabelle würde ich nicht übernehmen sondern selber erzeugen auf Basis deiner Gruppen. In deinem Fall also vermutlich einfach alle User in die Gruppe "Registrierte Benutzer", sonst nichts. Beachte, dass phpBB komische Dinge tun könnte, wenn die Standardgruppen nicht existieren, insbesondere registrierte Benutzer, Gäste und kürzlich registrierte Benutzer könnten problematisch sein, wenn sie fehlen, da etliche Standardfunktionen irgendwelche Dinge mit diesen Gruppen tun. In wiefern globale Moderatoren und Administratoren problematisch sind weiß ich nicht genau. Das heißt aber nicht, dass irgendwelche User in den Gruppen drin sein müssen, von daher musst du die Gruppenzugehörigkeiten nicht zwingend übernehmen. Der Gastbenutzer muss auch immer die selbe ID haben, aber das ist bei phpBB 3.0.x und 3.1.x gleich, da kannst du also nicht viel falsch machen, wenn du die User übernimmst.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
Welche Werte aus der Config-Tabelle sind das konkret?gn#36 hat geschrieben: [*]In der Config Tabelle sind Daten gespeichert, die z.B. für die Passwortverschlüsselung wichtig sind. Ohne diese Daten werden sämtliche Passwörter ungültig.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Re: Neuinstallation [3.1.x] -> User von [3.0.x] importieren
gn#36 hat geschrieben:Heißt aber: Die Configtabelle dürfte den Passwörtern wohl eher nicht im Weg stehen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.