Foren-Nutzer mit raw sql anlegen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Mean
Mitglied
Beiträge: 115
Registriert: 13.03.2008 19:41

Foren-Nutzer mit raw sql anlegen

Beitrag von Mean »

Hallo zusammen,

auf unserer Vereinsseite bieten wir für unsere Mitglieder einen Mitgliederbereich + Forum an. Die Registrierung läuft über unsere Internetseite und nicht über das Forumsformular und erst wenn ein Mitglied vom Admin freigeschalten wurde (wir haben die Mitgliedsdaten aus Datenschutzgründen nicht auf dem Server), dann würde ich gerne ein Script per Cronjob oder manuell anstoßen, dass den Benutzer auch als Benutzer im Forum anlegt.

Ich habe mittels phpstorm und "manuell" den source code durchsucht, wie genau das INSERT INTO statement für einen neuen Benutzer aussehen müsste habe ich jedoch nicht gefunden. Auch wie das Passwort verschlüsselt wird bin ich mir nicht sooo sicher: passiert das in der salted_md5.php? Reiner md5 ist das ja nicht, wenn ich es mit den bestehenden Passwörtern vergleiche.

Ich möchte extra keine bestehenden Plugins verwenden, damit ich immer sicherstellen kann, dass ich das Board immer updaten kann und nicht evtl. auf Updates irgendwelcher Erweiterungen warten muss.

Vielen Dank und viele Grüße,

Dirk
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Foren-Nutzer mit raw sql anlegen

Beitrag von gn#36 »

Ich habe sowas ähnliches bei meiner Vereinsseite überlegt - ich habe aber nur eine Verknüpfung zwischen beiden angelegt, indem ich in meiner Webseite die Foren ID mit in die Datenbank lege. In meinen Mods habe ich dann ein zweites Datenbankobjekt, das für die Infos die ich aus der Webseite zu den Usern brauche zusätzlich die Datenbank der Webseite abfragt.

Wenn du von der Webseite aus den User anlegen willst gibt es dafür in der includes/functions_user.php die Funktion user_add (wenn du noch phpBB 3.0.x nutzt, da sollte es die auch geben). Wenn du phpBB 3.1.x nutzt kannst du einen Cronjob ziemlich einfach als Extension anlegen. In dem Cronjob machst du das dann genauso wie ich in meinem Mod: Erzeug' dir ein zusätzliches Datenbankobjekt (z.B. $hp_db), das sich mit der Datenbank der Homepage verbindet und dann die Daten für den User abholt. Anschließend speist du das ganze einfach in die Funktion user_add und schon hast du deinen User. Du musst nur darauf achten, das Passwort gehasht zu übergeben, wenn es dabei ist. Die funktion dafür ist in der includes/functions_compatibility.php, phpbb_hash. Allerdings wird sie in phpBB 3.3.x entfernt - ich bin gerade nicht sicher wo die neue Alternative gelandet ist, musst du mal schauen, ich denke in phpbb/user.php oder sowas.
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.
Mean
Mitglied
Beiträge: 115
Registriert: 13.03.2008 19:41

Re: Foren-Nutzer mit raw sql anlegen

Beitrag von Mean »

Hi gen#36,

cool, das hört sich gut an.
Das Problem könnte nur sein, dass in der Homepage die Passaöeter mit salted hash verschlüsselt werden und ich das Passwort dann nicht einfach so übertragen kann. Ggf. erzeuge ich dann aber einfach ein neues - ich möchte ja eh, dass die Benutzer über den Mitgliederbereich gehen. Dann könnte ich sie darüber quasi am direkten Foren-Login hindern.

Vielen Dank und viele Grüße,

Dirk
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Foren-Nutzer mit raw sql anlegen

Beitrag von gn#36 »

Dann kannst du die Passwörter nicht in einem Cronjob übertragen. Du könntest sie aber direkt bei der Registrierung auf der Homepage mitübertragen, oder aber beim nächsten Login auf der Homepage - zu dem Zeitpunkt bekommst du ja das Passwort ein mal im Klartext. Alternativ baust du dir ein Authentication Plugin in phpBB ein, so dass phpBB den Login deiner Homepage mitnutzen kann. Ein paar Beispiele gibt's hier, das sind die Standard phpBB Auth plugins. Du musst nur eine Klasse bauen, die alles zur Verfügung stellt, was in der Klasse \phpbb\auth\provider\provider_interface an Funktionen gefordert wird. Einfachererweise leitest du ab von einer bestehenden Klasse, sofern es passt. Die Nutzer müssen natürlich trotzdem in der Datenbank existieren, nur das Passwort ist dann egal.
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.
Mean
Mitglied
Beiträge: 115
Registriert: 13.03.2008 19:41

Re: Foren-Nutzer mit raw sql anlegen

Beitrag von Mean »

Gibt es denn ein (gutes) Tutorial, wie ich ein Plugin mit Task fürs phpBB erstellen kann?

Ich verwende 3.1.5. So wirklich was gefunden habe ich aber nicht - vieles war mit RC 1 oder RC 2 gekennzeichnet. K.A., ob es da evtl. Unterschiede gibt. Auch ein Versuch ein externes PhpScript zu erstellen, in das ich lediglich die functions_compatibility.php und functions_user.php einzubinden. Wegen der .htaccess scheint das aber nicht zu klappen (vielleicht auch aus einem anderen Grund; Dateien meiner Internetseite kann ich einbinden, die jedoch nicht). Wäre zwar die einfachste Möglichkeit, aber die .htaccess will ich nicht ändern und vermutlich würde mir auch der Kontetxt beim Aufruf außerhalb des phpBB fehlen?!

Für Hilfe wäre ich sehr dankbar. Kann ich denn problemlos RC 1 / RC 2 Tutorials verwenden oder besteht da die Gefahr, dass Dinge nicht funktionieren?

Vielen Dank und viele Grüße,

Dirk
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Foren-Nutzer mit raw sql anlegen

Beitrag von gn#36 »

phpBB Funktionen setzen üblicherweise Voraus, dass das Grundsystem von phpBB im Hintergrund läuft, also sprich, dass irgendwann mal die Konstanten wie üblich am Anfang des Skripts definiert wurden und dann die common.php eingebunden wurde, so dass Datenbankzugriffe etc. funktionieren.

Was Anleitungen angeht schau mal hier und hier.

Cron Jobs sind in phpBB 3.1.x standardisiert und lassen sich als Teil einer Extension sehr einfach anlegen. Im Grunde brauchst du eine Klasse die drei spezielle Funktionen enthält und eine Bekanntmachung der Klasse in einer Konfigurationsdatei. Das wird soweit ich weiß unter den obigen Links ebenfalls beschrieben wie das geht.

Die .htaccess hat keinen Einfluss auf PHP seitige Einbindungen - die regelt nur auf was der Browser von außen Zugreifen kann. Wenn du die Dateien per include über das Dateisystem einbindest sollte die .htaccess völlig egal sein. Nur wenn du es über das Netzwerk probierst (also z.B. sowas gefährliches wie include('http://seite.de/datei.php');) dann hat die .htaccess eine Auswirkung. Das solltest du aber sowieso nicht machen - im Zweifel lieber die Datei rüberkopieren.
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.
Antworten

Zurück zu „Coding & Technik“