phpBB automatischer Login auf externer Seite
In diesem Artikel geht es darum, phpBB in eine bereits existierende Webseite oder Anwendung einzubauen. Dafür muss man das Login im Forum an das bereits existierende Login koppeln, das heißt man meldet sich automatisch auch am Forum an. Um dies zu erreichen müssen die Benutzer der bereits bestehenden Seite mit jenen des Forums abgeglichen werden. Ich zeige euch wie man so etwas macht.
phpBB automatischer Login auf externer Seite
Für meine PHP Applikation benötige ich ein Forum. Es gibt bereits eine WordPress Landingpage von der aus sich Benutzer für die PHP Applikation anmelden können. Zusätzlich wird auf der WordPress Seite auch ein Link zu einem Forum angeboten. Aktuell müssen sich Interessenten separat in der Applikation und im Forum registrieren und sich auch jedes mal doppelt anmelden. Da ich nun das phpBB Forum in die PHP Applikation integrieren möchte ist ein solches Login-Desaster natürlich schädigend. Mit einem einzigen Login soll man alle Funktionalitäten bekommen. Aus diesem Grund haben wir 2 Dinge vor:
- Benutzer registrieren sich einmalig
bei der Registrierung wird neben dem Benutzerkonto in der PHP Applikation auch automatisch ein phpBB Benutzer mit den selben Login Daten angelegt. - ein Login für die ganze Seite
ein Benutzer loggt sich einmalig an und kann dann sowohl die Funktionen der PHP Applikation verwenden als auch ins Forum als Benutzer wechseln und dort Themen erstellen und Posts abschicken.
Automatische Erstellung von phpBB Benutzerkonten
In phpBB Benutzer automatisch erstellen ist recht einfach und wurde bereits im letzten Artikel gezeigt. Man kann diese Benutzererstellung idealerweise mit der Registrierung von Benutzern in der anderen Software wie WordPress oder einer eigenen PHP Applikation kombinieren. Man erreicht dadurch synchronisierte Benutzerdatenbanken und einheitliche Logins.
Automatisches Login im phpBB Forum
Das automatische Login an phpBB ist sogar noch einfacher als das Anlegen eines neuen Benutzers. Mit folgenden Code wird man am phpBB Forum automatisch angemeldet und das Login wird in der Session am Webserver abgespeichert:
$user->session_begin(); $auth->acl($user->data); $user->setup(); $username_phpbb = request_var('username', $username); $password_phpbb = request_var('password', $password); if(isset($username_phpbb) && isset($password_phpbb)) { $result=$auth->login($username_phpbb, $password_phpbb, true); /*if ($result['status'] == LOGIN_SUCCESS) { echo "You're logged in"; } else { echo $user->lang[$result['error_msg']]; }*/ }
Einzige Voraussetzung ist das Einbinden der phpBB *.php Datei common.php und das setzen der relevanten Variablen. Zusätzlich benötigt man bereits die Daten zum Benutzernamen und Passwort, welche in den Variablen $username und $password bereits vorliegen. Die login Funktion von phpBB liefert als Ergebnis den Loginstatus. Dieser wird in der auskommentierten IF Abfrage abgefragt. Das kann man zum Debuggen verwenden. In der Regel möchte man bei Login keinen zusätzlichen Code ausgeben.
Damit dieser Code auch funktioniert muss der bereits in der Benutzererstellung eingebundener Code zu Beginn des php Scripts eingebunden werden. Das ist folgender Code:
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); }
Fazit
Ich euch unter dem Titel „phpBB automatischer Login“ gezeigt wie man ein phpBB in eine bereits existierende Webseitenstruktur mit WordPress und einer eigens geschriebenen PHP Software integrieren kann. phpBB verhält sich dabei sehr handzahm und kann relativ gut in bereits bestehende Software sowohl visuell als auch logisch eingebaut werden. Mit dem automatischen Login wird ein für den Benutzer viel angenehmeres Umfeld geschaffen in dem die phpBB Forensoftware als eigenständige Software eigentlich gar nicht mehr existent ist und nicht als eigenständiges Programm empfunden wird. Dieser Ansatz ist sehr professionell.
Wo habt ihr euer phpBB eintegriert? Welche Tipps habt ihr sonst noch so?
Hallo Werner,
wo genau bzw. in welcher Datei muss ich den die Codezeilen oben einbauen?
Gruß Dominic
Hey,
ich habe das in einem Custom Script von mir verwendet. Genau genommen habe ich damit phpBB in eine von mir programmierte Applikation hinzugefügt. Das komplette Login und User Anlegen wird so nicht von den normalen phpBB Formularen erledigt, sondern beim Anlegen eines neuen Nutzers in meiner Applikation.
Hallo,
ich Benötige so ein Login für 2x Phpbb 3.3 Foren die auf dem selben Server liegen (PHP 7.4) aber getrennte (öffentliche / nicht öffentliche Inhalte) zeigen. Sprich 1x Login auf „Öffentlich“ loggt mich auch auf „nicht öffentlich“ mit ein.
Tricky ist dabei wohl das es 2x Phpbb ist und ich dort im Loginscript nicht so vorgehen kann wie oben beschrieben, hast du eine Idee wie ich das angehen kann?
Lg
Die Anfrage ist zugegeben sehr speziell. Ich denke da hilft nur ein customisiertes PHP Script. Möglich ist das auf jeden Fall, aber nicht trivial. Aus Erfahrung weiß ich, dass ein gemeinsames Login für 2 Systeme immer ein wahnsinns Aufwand ist. Du musst den Benutzer in 2 Datenbanken anlegen und dort auch zwei mal das selbe Passwort ablegen. Dein Glück ist, dass es das selbe System ist. Konkret mit Hinweisen oder gar Code kann ich da leider nicht aushelfen. Aus Projektmanagement-Sicht würde ich für den Task jedenfalls mehr Zeit schätzen als du annimmst.
Gesehen habe ich so etwas mal bei einem Kunden der ein CMS Login mit dem eines Webshops verknüpft hat. Das Session Management ist da aber so kompliziert gewesen, dass die Lösung nie zu 100% funktioniert hat.