Stand: 30.12.2008 04:56 aktuelle Version auf phpBB.de

Apache At Work Communities Community Building Informationen und Hinweise Installation/Konfiguration/Update MySQL PHP phpBB-Optimierungen phpBB3 Rechtliches Server & Technik Snippets Templates und Mods

Knowledge Base Offline -> At Work -> Integration der Benutzerverwaltung von phpBB in eine Internet-Präsenz

Integration der Benutzerverwaltung von phpBB in eine Internet-Präsenz
Autor: PhilippK
Stand: 30.12.2008 04:56
Neuste Version unter: http://www.phpbb.de/doku/kb/integration

### Integration der Benutzerverwaltung von phpBB in eine Internet-Präsenz

##### Dieser Artikel beschreibt, wie die phpBB-Benutzerverwaltung in eine Internet-Präsenz integriert werden kann

In disem Artikel wird beschrieben, wie die phpBB-Benutzerverwaltung in eine Internet-Präsenz integriert werden kann. Es wird beschrieben, wie:

- neue Einträge in der phpBB-Benutzertabelle erstellt werden können,
- eine Benutzeranmeldung vorgenommen werden kann und
- der aktuelle Status eines Benutzers erkannt werden kann.

Es wird nicht beschrieben, wie ihr phpBB dazu bringen könnt, eure eigene Benutzerverwaltung zu verwenden.
Anlegen neuer Benutzer
Ein neuer Benutzer wird durch einen Eintrag in der Tabelle phpbb_users (Tabellennamen ggf. auf verwendeten Präfix anpassen) angelegt. Dabei sind folgende Besonderheiten zu beachten (weitere Details auf der verlinkten Seite):

- user_id: Die zu vergebende ID muss selbst ermittelt werden (sie wird nicht automatisch von der Datenbank festgelegt) und sie muss natürlich eindeutig sein.
- user_active: Sofern kein eigenes Authentifizierungsverfahren erstellt wird, muss hier der Wert 1 eingetragen werden, damit sich der Benutzer auch anmelden kann.
- username: Muss natürlich eindeutig sein.
- user_password: Passwörter werden mit MD5 verschlüsselt.
- user_regdate: Hier ist der UNIX-Zeitstempel der Registrierung anzugeben.
- user_level: Unbedingt auf 0 setzen (sonst hat der User Admin-Rechte)

Zusätzlich muss jedoch auch eine Gruppe für den Benutzer angelegt werden sowie eine Verknüpfung zwischen Benutzer und Gruppe hergestellt werden. Dazu ist in der Tabelle phpbb_groups ein neuer Datensatz anzulegen, wobei:

- group_id: automatisch vergeben wird,
- group_type: 1 ist,
- group_name: leer ist (Leerer String: '' bzw. ""),
- group_description: mit 'Personal User' (ohne Anführungszeichen) zu belegen ist,
- group_moderator: auf 0 und
- group_single_user: auf 1 zu setzen ist.

Des weiteren muss in phbb_user_group eine Verknüpfung erstellt werden, wobei:

- group_id: die ID der Gruppe ist,
- user_id: die ID des Benutzers ist und
- user_pending: auf 0 zu setzen ist.

Übergabe der Benutzeranmeldung
Damit die Benutzeranmeldung an phpBB übergeben wird, gibt es zwei Möglichkeiten:
1. Die Verwendung des phpBB-eigenen Anmeldeverfahrens
Dazu sind die Anmeldedaten (Benutzer und Passwort) an die login.php im POST-Verfahren zu schicken:

- Als username ist der Benutzername zu übermitteln,
- als password das unverschlüsselte (!!!) Passwort und
- optional als redirect die Adresse der Seite, die anschließend anzuzeigen ist (relativ zum Pfad der login.php - wird nichts angegeben, so wird die Forenstartseite aufgerufen)

Dieses Verfahren ist wegen der unverschlüsselten Passwortübermittlung unsicher. Wird mit 'redirect' auf eine Seite verwiesen, so muss diese Seite die phpBB-Benutzerverwaltung unterstützen.
2. Die manuelle Erstellung einer Benutzer-Sitzung
Dazu muss ein entsprechender Eintrag in die Tabelle phpbb_sessions erfolgen:

- session_id: eindeutige ID der Session. Wird unter PHP wie folgt erstellt:

Code:
md5(uniqid(mt_rand(), true))

- session_user_id: ID des Benutzers.
- session_start: UNIX-Zeitstempel des Sitzungsbeginns
- session_time: UNIX-Zeitstempel der letzten Aktualisierung der Session (bei Erstellung identisch mit session_start)
- session_ip: IP des Benutzers in Hexadezimal.
- session_page: ID des Forums oder Konstante der Seite (siehe constants.php), auf der sich der Benutzer befindet. Ggf. hier 0 (Foren-Index) oder -1 (Anmelde-Seite) verwenden.
- session_logged_in: hier immer 1 (wir wollen ja einen angemeldeten Benutzer)
- session_admin: nur ab phpBB 2.0.15 zu vergeben und im Regelfall 0.
  Ist dies geschehen, so kann eine Foren-Seite aufgerufen werden. Der Seite ist dabei unbedingt in der URL als Parameter 'sid' die ID der Sitzung (siehe oben) zu übergeben, also z. B.:

Code:
http://www.phpbb.de/index.php?sid=0123456789abcdef0123456789abcdef

Alternativ kann auch ein Cookie gesetzt werden. Dieses Verfahren ist jedoch deutlich aufwendiger, für Details sei auf den Code in der ./includes/session.php verwiesen.
Überprüfung des Benutzerstatus
Um zu überprüfen, ob ein Benutzer angemeldet ist, muss die Session-ID entweder aus dem Cookie (Cookie-Name: der im Admin-Bereich festgelegte Cookie-Name ergänzt um '_sid' (ohne Anführungszeichen) oder aus dem POST/GET-Parameter sid abgefragt werden. Dabei müssen alle drei Möglichkeiten geprüft werden! Um in phpBB einer URL ggf. eine Session-ID anzufügen, ist die Funktion append_sid() zu verwenden.
Diese Daten sind dann mit den Daten der Tabelle phpbb_sessions abzugleichen (siehe oben). Hierbei ist darauf zu achten, dass nur dann eine gültige Sitzung übergeben wurde, wenn:

- session_id existiert,
- session_logged_in 1 ist,
- session_time + 3600 in der Zukunft liegt (sofern im Admin-Bereich keine andere Sitzungslänge festgelegt wurde; die Sitzungslänge ist in der Tabelle phpbb_config unter session_length gespeichert) und
- der Benutzer auf aktiv (user_active = 1 in phpbb_users) gesetzt ist. (ggf. wäre auch die Bann-Funktion und die IP-Adresse zu prüfen)

Knowledge Base Offline -> At Work -> Integration der Benutzerverwaltung von phpBB in eine Internet-Präsenz

| phpBB.de Knowledge Base (Offline-Version) ©2005 Sascha Carlin und das phpBB.de-Team - Impressum Das Kopieren von Artikeln (auch auszugsweise) ist nur nach ausdrücklicher Genehmigung erlaubt! phpBB.de: Infos | Forum | Downloads | Dokumentation |