Ab Weihnachten 2015 erhalten Elevenfour Stile für WBB 3.1 keinen offiziellen Support mehr.
Für eines der von mir betreuten Projekte benötige ich eine Art Vorschaltseite, die überprüfen soll ob ein Benutzer bereits angemeldet ist. Falls der Benutzer angemeldet ist, soll er sofort ins Forum weiter geleitet werden, falls nicht, soll er ein Loginformular angezeigt bekommen.
Soweit die Anforderung. Zum Hintergrund sei gesagt: Die Inhalte der Seite sind nur registrierten Benutzern zugänglich, alle anderen bekommen die berühmte Zugriffsverweigerung des WCF angezeigt.
Ich habe mich dazu entschieden eine PHP-Datei anzulegen, die nicht direkt mit dem WCF/WBB verbunden ist und prüfe ab ob eine Benutzer-ID vorhanden ist. Der Aufbau der Datei ist denkbar einfach und mit wenig Aufwand erstellt.
Zunächst muss einmalig das WBB initialisiert werden. Dies geschieht durch einen Aufruf der global.php - ich verwende hier nur den relativen Pfad. Die von mir erstellte Datei liegt im root-Verzeichnis des Servers (dort befindet sich auch eine HTML mit dem Loginformular), das Forum liegt im Unterordner forum.
PHP
require_once 'forum/global.php';
Anschließend folgt die eigentliche Abfrage der userId und im positiven Fall die sofortige Weiterleitung auf das Forum
PHP
if (WCF::getUser()->userID != 0)header('Location: http://domain.de/forum/index.php');
und zu guter Letzt muss noch der negative Fall abgefragt werden, nämlich dass keine userID vorhanden ist und der Benutzer nicht angemeldet ist
PHP
else echo file_get_contents('loginContent.html');
Die Datei loginContent.html enthält dabei das komplette Markup. Die von mir erstellte PHP-Datei enthält lediglich den PHP Code.
Hier zur Veranschaulichung einmal der komplette Inhalt der PHP-Datei (im Idealfall benennst du sie als index.php).
Hier zur Veranschaulichung einmal der komplette Inhalt der PHP-Datei (im Idealfall benennst du sie als index.php).
PHP
<?php
// initialize Burning Board
require_once 'forum/global.php';
// check if userID is not 0 and if so redirect
if (WCF::getUser()->userID != 0)header('Location: http://domain.de/forum/index.php');
else
echo file_get_contents('loginContent.html');
// else get contents of file to show login form
?>