Viele Webdesigner- und Webdeveloper welche mit Weblication arbeiten und dies auf Ihrer Firmenwebsite dem Kunden vorstellen werben mit dem Weblic-Zusatz: phpBB Forumschnittstelle.
phpBB ist eine kostenlose Forensoftware, meiner Ansicht nach sogar die Beste kostenlose Forensoftware die es momentan gibt. Dadurch dass die Fangemeinde so riesig ist gibt es zahlreiche Mods und es wurde mit dem Forum schon so ziemlich alles erdenkliche gemacht.
Für dieses Forum gibt es ein Weblic in Weblication welches einen Schnittstelle dafür bietet. Mithilfe der Schnittstelle kann man Benutzer importieren, bzw. von Weblication zu phpBB exportieren.
Das macht man vielleicht einmal, aber was passiert wenn neue Benutzer hinzukommen oder man eine zentrale Benutzerverwaltung benötigt? Nun gibt es zwei Lösungsansätze:
Entweder die Benutzerdatenbank von phpBB benutzen und Weblication versuchen umzubiegen.
Oder die komfortable Benutzerverwaltung von Weblication zu nutzen und das Forum anzupassen.
Ich habe mich für Letztere entschieden weil es durchaus einfacher ist phpBB zu modden.
Dazu habe ich folgenden Forumbeitrag gefunden: http://www.phpbb.de/viewtopic.php?t=46971%26highlight=weblication
In diesem wird vorgeschlagen die Apache Authentication Methode zu benutzen. Toll ist das wenn diese tatsähich zum EInsatz kommt. Meistens hat man jedoch eine Frontendbenutzeranmeldung für öffentlich Benutzer oder sogar für mehrere Backend Benutzer. Um diese Benutzeranmeldung zu nutzen musste der Code dafür ein wenig umgeschrieben werden.
require_once ($_SERVER["DOCUMENT_ROOT"]."/weblication/lib/WFRAMEWORK/wUserCur.php"); // START: Apache authentication hack // ******** // ******** // ******** // Please realize this totally bypasses normal phpBB authentication! // Only use this with secure connections with high-grade encryption. // This is mostly a copy/paste from login.php with a few tweaks. // Make sure we have a new session. if (!array_key_exists('sid',$HTTP_POST_VARS) && !array_key_exists('sid',$HTTP_GET_VARS)) { $sid = ''; // Grab the login from whatever apache gives us. $userClass = new wUserCur(); $username = $userClass->wGetUserName(); if($username=='') { header("Location: http://www.url.tld"); } // Get user information from the database, create the session, and log the user in. $sql = "SELECT user_id, username, user_password, user_active, user_level FROM phpbb_users WHERE username = '" . str_replace("\\'", "''", $username) . "'"; print($sql); if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql); } elseif ($row = $db->sql_fetchrow($result)) { if($row['user_level'] != ADMIN && $board_config['board_disable']) { redirect(append_sid("index.$phpEx", true)); } else { $autologin = TRUE; $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin); if($session_id) { $url = (!empty($HTTP_POST_VARS['redirect'])) ? $HTTP_POST_VARS['redirect'] : "index.$phpEx"; redirect(append_sid($url, true)); } else { message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__); } } } else { print "Database query error!"; } } // STOP: Apache authentication hack
Und dann sollten natürich noch die Tipps wie im Forum beschrieben beachtet werden:
c) Eine Nacharbeit im Template ist nötig, damit die login/logout/register-Buttons verschwinden. (i.d.R. lediglich in ‘overall_header.tpl’)
d) Sicherheitshalber kann man noch ein ‘exit;’ in die login.php setzten. Und wer ganz sicher gehen will, kann in profile.php eine Abfrage auf $mode == ‘register’ einsetzten um dort ebenfalls ein exit zu setzen. Alternativ kann man statt exit auch ein ‘message_die(CRITICAL_ERROR, “blabla”);’ oder gar ein ‘redirect(’index’.$phpEx);’ nehmen.
In der login.php sollte man dann noch folgendes integrieren:
require_once ($_SERVER["DOCUMENT_ROOT"]."/weblication/lib/WFRAMEWORK/wUserCur.php"); /*************************************************************************** * login.php * ------------------- * begin : Saturday, Feb 13, 2001 * copyright : (C) 2001 The phpBB Group * email : support@phpbb.com * * $Id: login.php,v 1.47.2.25 2006/12/16 13:11:24 acydburn Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ // // Allow people to reach login page if // board is shut down // define("IN_LOGIN", true); define('IN_PHPBB', true); $phpbb_root_path = './'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); $userClass = new wUserCur(); $username = $userClass->wGetUserName(); $sql = "SELECT user_level FROM " . USERS_TABLE. "Where username = $username"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); if ($row['user_level'] == '0') { exit; }
Dadurch können sich Administratoren auch weiterhin in das Administrationsmenü einloggen, alle anderen Benutzer erhalten ein exit.
//Edit 24.04.2008: Ein Nachtrag zu diesem Artikel ist erschienen.
Klicke auf den Button um einen Link zu diesem Artikel bei Twitter zu veröffentlichen.

Kommentarfunktion geschlossen.