Seite 1 von 1

Foren-Nutzer mit raw sql anlegen

Verfasst: 02.07.2015 19:08
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

Re: Foren-Nutzer mit raw sql anlegen

Verfasst: 03.07.2015 11:35
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.

Re: Foren-Nutzer mit raw sql anlegen

Verfasst: 03.07.2015 17:01
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

Re: Foren-Nutzer mit raw sql anlegen

Verfasst: 04.07.2015 11:12
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.

Re: Foren-Nutzer mit raw sql anlegen

Verfasst: 06.07.2015 19:14
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

Re: Foren-Nutzer mit raw sql anlegen

Verfasst: 07.07.2015 09:34
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.