2009-03-10 11 views
3

Ich verwende derzeit ein PHPBB2-Forum für einen Abschnitt einer meiner Websites, und ich möchte diese Website erweitern (neue Seiten, Skripts, usw. hinzufügen). Ich möchte den Zugriff auf diese Seiten auf die Benutzer beschränken, die bereits im PHPBB2-Forum angemeldet sind.Verwenden Sie PHPBB2 Login Credentials in meiner Website

In der Tat, wenn nur Mitglieder einer bestimmten MemberGroup auf diese Seiten zugreifen könnten, wäre das großartig.

Gibt es eine Möglichkeit, die gleichen Anmeldeinformationen auf dem Rest meiner Website zu verwenden und herauszufinden, aus welchen Gruppen die Mitglieder stammen?

Dank

(übrigens sind diese Seiten in PHP)

Antwort

1

Wenn ein Benutzer in PHPBB angemeldet ist, besteht eine gute Chance, obwohl nicht immer wahrscheinlich, dass er dann einen Cookie hat, den Sie lesen können, und helfen bei der Überprüfung des wer ist wer gegen die Datenbank.

In diesem Fall werden Sie die Krümel des Cookies unten brechen wollen:

$_COOKIE["phpbb2mysql_data"] 

Nehmen wir ein Beispiel verwenden und es wehen die Daten, die wir gegen die Datenbank abfragen müssen, um herauszufinden. Unten ist der Brocken in dem obigen Cookie gefunden:

a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";} 

Dazu werden Sie in gehen wollen und extrahieren, dass „3“, die in PHPBB für den angemeldeten Benutzer entsprechen passiert.

Unserialize that data an, dass User_id ausreißen:

$goo = unserialize($_COOKIE["phpbb2mysql_data"]); 
$extracted_id = $goo["userid"]; 

(Dank epochwolf auf zeigt die obige serialisierten Form dieses Cookie out)

Diese Zahl wird sich gut gegen die Datenbank ausgeführt werden, um zu überprüfen Zu welcher Gruppe gehört das Mitglied? Und Sie würden die Prüfung gegen die phpbb_user_group Tabelle laufen (wenn Sie phpbb_ als Präfix des Forums Tabellen hatte.)

Wenn Sie nicht aus der Datenbank Spur der Gruppen-IDs halten wollte, dann müssen Sie Machen Sie eine Art von Join und testen Sie den Namen. Vielleicht so etwas wie folgt aus:

SELECT pug.user_id FROM phpbb_user_group pug 
LEFT JOIN phpbb_groups g 
ON pug.group_id=g.group_id 
WHERE pug.user_id='$extracted_id' 
AND g.group_name='Foo'; 

Wenn Sie eine Zeile aus, dass ziehen kann, dann finden Sie haben sich ein angemeldeter Benutzer, die dieser Foo-Gruppe gehört.

+0

-1 für unsachgemäße Behandlung von serialisierten Daten. – epochwolf

+0

Falls Sie nicht wussten, dass das Cookie ein serialisiertes Array enthält. Sie sollten die Funktion unserialize() von php verwenden, um die Daten zu extrahieren. http://www.php.net/unserialize – epochwolf

+0

Danke für den Zeiger auf die serialisierten Daten, bearbeitete Antwort, um das Leben einfacher zu machen. – random

1

Verwenden phpbb2 Tisch Benutzer und es ist Login und Berechtigungen Code in den anderen Seiten. Es ist schmutzig, aber es funktioniert.

von phpbb2 des Code, ich meine:

Dig in phpbb2 Code, herauszufinden, wie phpbb2 Benutzer authentifiziert, und die entsprechenden Teile des Codes kopieren. Wenn PHPBB2 anständig strukturiert ist, können Sie vielleicht ein paar Dateien in PHPBB2 einfügen und sie ohne einen größeren Hack-Job verwenden. Wenn es nicht gut strukturiert ist, wird es schmutzig und hässlich.

Vergessen Sie nicht, Ihre neuen geschützten Ergänzungen auf Ihrer Website zu testen! Stellen Sie sicher, dass Sie die Hacks richtig verstanden haben.

+0

Ich erinnere mich nicht, wenn phpBB2 dies hat, aber phpBB3 hat eine dokumentierte API für die Anmeldung und die damit verbundenen Aufgaben. – Powerlord

0

Sie können die Benutzer- und Gruppentabellen von phpBB 2 direkt verwenden.Soweit ich mich erinnere, ist die Passwortspalte nur ein md5() des tatsächlichen Passwortes.

Dieser Trick funktioniert nicht mehr in phpBB3, da das Passwort (endlich) gesalzen ist.

Verwandte Themen