phpBB Benutzer automatisch erstellen
In diesem Artikel zeige ich euch wie ihr für phpBB Benutzer automatisch erstellen könnt. Das funktioniert von einem externen Skript sehr gut. Damit kann man bei der Registrierung eines Benutzers auf einer externen Seite (zum Beispiel WordPress oder einer eigenen PHP Applikation) gleichzeitig einen phpBB Benutzer erstellen. Im nächsten Teil zeige ich wie man dann zusätzlich noch das Login automatisiert, dass man gleichzeitig auch in phpBB automatisch eingeloggt wird.
phpBB Benutzer automatisch erstellen
Laut der phpBB Dokumentation stellt phpBB eine eigene Funktion zur Erstellung eines Benutzers bereit. Diese Funktion heißt user_add($user_row, $cp_data = false). Die Erstellung der Forenbenutzer ist relativ simpel und sollte in das bereits bestehende Skript eingebunden werden in dem aktuell Benutzer für die Webseite registriert werden. Pflichtfelder sind:
- eMail (user_email)
- Benutzername (username)
- Passwort (password)
- Gruppen ID (group_id)
- Benutzertyp (user_type)
Bis auf Gruppen ID und Benutzertyp müssen die Informationen vom Benutzer eingegeben vorliegen. Gruppen ID und Benutzertyp kann man fix setzen. Am Anfang des Skripts bauen wir nun folgenden Code ein:
if($phpbb_root_path != '') { define('IN_PHPBB', true); $phpEx = substr(strrchr(__FILE__, '.'), 1); include_once($phpbb_root_path . 'common.'.$phpEx); include_once($phpbb_root_path . 'includes/functions_user.'.$phpEx); }
Den Pfad zur phpBB Applikation muss man zuvor bereits in der Variable $phpbb_root_path gesetzt haben. In meinem Fall habe ich das dort gemacht, wo ich auch alle anderen statischen Variablen der PHP Applikation hinterlegt habe. Es ist sowohl ein relativer als auch absoluter Pfad möglich. Der Variablenname ist Pflicht, der wird unter Umständen auch in phpBB verwendet.
Mit der define Klausel wird die Varaible IN_PHPBB fix gesetzt, außerdem wird das Dateiprefix der aktuellen Datei (*.php) in der Variablen $phpEx gespeichert. Eingebunden werden 2 externe phpBB Dateien. Das ist die common.php Datei welche alles zusätzliche von phpBB einbindet wie die Datenbakverbindung. Die functions_user.php benötigen wir um den Benutzer anlegen zu können. Nun sind wir startklar. Alles ist vorbereitet, der Benutzer muss nur noch angelegt werden.
Weiter unten im PHP Skript, dort wo bereits die genannten Informationen zu eMail, Benutzername und Passwort vorhanden sind erstellen wir den Benutzer mit folgenden Code:
$phpbb_user_id = null; //create phpbb account if($phpbb_root_path != '') //path comes from config.inc.php { $user_actkey = md5(rand(0, 100) . time()); $user_actkey = substr($user_actkey, 0, rand(8, 12)); $user_row = array( 'username' => $username, 'user_password' => phpbb_hash($password), 'user_email' => $email, 'group_id' => $phpbb_group_id, 'user_lang' => $language, 'user_type' => USER_NORMAL, 'user_actkey' => $user_actkey, 'user_regdate' => time(), ); // all the information has been compiled, add the user // tables affected: users table, profile_fields_data table, groups table, and config table. $phpbb_user_id = user_add($user_row); }
Wir erstellen ein PHP Array mit allen Informationen. Die bereits genannten Informationen sind Pflichtangaben, zusätzlich dazu werden auch einige sinnvolle optionale Werte angegeben. $username und $email sollte klar sein, das Passwort mit der phpbb_hash Funktion in einen Hash-Wert umgewandelt werden. Die group_id legt die Gruppenberechtigung des Benutzers fest. Die Ids kann man im Administrator Panel abfragen, bei meiner Version ist die ID 2 jene der normalen Forenbenutzer ohne zusätzliche Rechte. Dazu passend setzen wir den user_type auf USER_NORMAL. Optional setzen wir noch den user_actkey den wir zuvor erstellt haben und die user_regdate mit dem aktuellen Datum. Damit können wir später sehen wann sich der Benutzer genau registriert hat.
Mit all diesen Informationen müssen wir nur noch die user_add() Funktion aufrufen. Als Rückgabewert bekommen wir die angelegte ID des Benutzers. Es macht Sinn diese ID sicherheitshalber in der eigenen PHP Applikation abzuspeichern.
Vorteile
Der große Vorteil bei der gleichzeitigen Erstellung der Benutzer für das Forum und der externen Applikation ist, dass es den Benutzer so nie doppelt geben kann und es zu keinen Komplikationen kommt. Eine eMail Adresse kann so nicht bereits im Forum existieren, wenn man sich bei der PHP Applikation anmeldet.
Nachteile
Man sollte unbedingt im Forum die Registrierungsfunktion deaktivieren beziehungsweise ausblenden. Ansonsten könnte sich ein Benutzer vorab im Forum anmelden und bei der gleichzeitigen Erstellung der Konten in der PHP Applikation würde es dann zu einer Fehlermeldung kommen, da die eMail Adresse im Forum bereits registriert ist. Ein weiters Problem sind Passwortänderungen. Diese muss man ebenfalls synchronisieren, das funktioniert aber ähnlich einfach!
Fazit
In phpBB Benutzer automatisch erstellen ist relativ einfach. Die Forensoftware bietet bereits die komplette Funktionalität, welche man recht einfach in externen Seiten einbinden kann. Anwendungsfälle dafür gibt es genug, durch eine Integration von phpBB in die bereits vorhandene Webseite erreicht man dadurch eine bessere Benutzererfahrung und phpBB kann vollständig in die bereits vorhandene Seitenstruktur integriert werden.
Wo habe ihr phpBB im Einsatz? Als eigenständige Installation oder auch in Kombination mit anderer Software wie beispielsweise WordPress?
> Mit der define Klausel wird die _Variable_ IN_PHPBB fix gesetzt
Typo.