Seite 1 von 1

Integration in Zend

Verfasst: 04.09.2011 14:51
von t_b
Hallo,

Ich möchte phpBB in mein Zend-Projekt integrieren. Dafür habe ich phpBB in den 'public' Ordner von Zend als Unterordner 'forum' installiert. Ich möchte nun in meinem Zend Projekt die Benutzeraccounts des phpBB nutzen.

Dafür habe ich zunächst in der index.php den Forenpfad gesetzt:

Code: Alles auswählen

// Define path to forum directory
defined('FORUM_PATH')
     || define('FORUM_PATH', realpath(dirname(__FILE__) . '/forum'));
In meinem Usercontroller behandle ich nun ein kleines Login-Form:

Code: Alles auswählen

$params = $this->getRequest()->getParams();

// phpBB3 Initialisierung
global $phpbb_root_path, $phpEx, $user, $db, $config, $cache, $template;
define('IN_PHPBB', true);
define('PHPBB_INSTALLED',true);
$phpbb_root_path = FORUM_PATH . '/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
$phpBBFile =  $phpbb_root_path . 'common.' . $phpEx;
require_once $phpBBFile;

$auth = new auth();
$user = $auth->login($params['user'], $params['pw'],true);

if (!$user['error_msg']) {
    require_once $phpbb_root_path . 'includes/session.' . $phpEx;
    $session = new session();
    $session->session_begin();
    try {
         $session->session_create($user['user_id']));
    } catch (Exception $e) {
         echo $e->getMessage();
    }       
}
Nun, der Code gibt mir erfolgreich den Benutzer zurück, und erstellt die Session, inklusive Cookies von phpBB. Gehe ich aber von meinem aktuellen Pfad, also z.b. http://meinedomain.de/user/login nach http://meinedomain.de/forum ist der Benutzer nicht im phpBB wie gedacht eingeloggt. Nun stelle ich mir die Frage woran das liegt. (Die Cookies sind es mmn nach nicht, das der cookie für die gesamte domain gilt).

Re: Integration in Zend

Verfasst: 05.09.2011 22:18
von t_b
Hat denn noch keiner versucht phpBB in andere Systeme zu integrieren?
Die Authentifizierun gegen die Datenbank funktioniert ja, aber das Problem mit der 'falschen' Session muss doch jemand schon einmal gehabt haben.
Ich weiss mittlerweile, dass ich 'session->session_create ' nicht ausführen darf, da das eine andere Methode übernimmt, aber dennoch funktioniert es nicht.

Re: Integration in Zend

Verfasst: 05.09.2011 23:32
von Pyramide
t_b hat geschrieben:Hat denn noch keiner versucht phpBB in andere Systeme zu integrieren?
Doch, deshalb gibt es in phpBB auch ein entsprechendes Plugin-System dafür: http://wiki.phpbb.com/Authentication_plugins (ist übrigens in der Forum-FAQ verlinkt...)

Re: Integration in Zend

Verfasst: 06.09.2011 23:09
von t_b
Mhh, ich dachte ich hätte im ersten Beitrag darauf hingewiesen, dass ich dieses Seite als Anhaltspunkt genutzt habe :o . Mein Fehler....

Ziel soll es ja (für mich) nicht sein, den Benutzer nur gegen die Datenbank von phpBB zu authentifizieren, sondern zudem eine Session zu erstellen, mit der der Benutzer sich nach Anmeldung im Zend-Projekt sich nicht nochmal im Forum explizit anmelden zu müssen.
In der Wiki steht, dass der Benutzer mit der Login-Methode gegen die Datenbank authentifiziert wird. Zudem benötigt man die Autologin-Methode um eine neue Session zu erstellen (also ein Cookie mit der SessionId, einen mit der UserId und ein Eintrag in der Tabelle 'Session' mit SessionId und UserId).
Da die Methode jedoch nicht (mehr) verfügbar ist, und die Login-Methode den Parater 'autologin' besitzt, dachte ich, dass es genügt diesen auf TRUE zu setzen. Dies scheint jedoch nicht der Fall zu sein. Und deshalb ja auch die Frage....

Re: Integration in Zend

Verfasst: 07.09.2011 18:53
von Pyramide
t_b hat geschrieben:Da die Methode jedoch nicht (mehr) verfügbar ist, und die Login-Methode den Parater 'autologin' besitzt, dachte ich, dass es genügt diesen auf TRUE zu setzen. Dies scheint jedoch nicht der Fall zu sein. Und deshalb ja auch die Frage....
Ich glaube du verwechselst da was. Nicht du musst die Funktionen aufrufen, sondern du musst diese implementieren und phpBB ruft diese dann auf. Guck dir am besten mal die includes/auth/auth_apache.php oder includes/auth/auth_ldap.phpan, da kannst du sehen wie sowas aussehen muss. Anstatt auf $_SERVER['PHP_AUTH_USER'] oder den LDAP-Server zuzugreifen, musst du dann eben prüfen, ob der Benutzer in deiner Anwendung angemeldet ist.

Re: Integration in Zend

Verfasst: 09.09.2011 06:42
von t_b
In der Tat, da scheine ich was missverstanden zu haben.
Jedoch möchte ich nicht die Art meiner Authentifizierung ändern, sondern die vorhandenen Mechanismen nutzen um eine vom Forum nutzbare Benutzer-Session zu erstellen.

Vielleicht habe ich mich auch falsch ausgedrückt... deshalb schreibe ich mal die Logik auf:

- Benutzer kommt auf http://domain.de/
- Benutzer findet auf der Haupt und den Unterseiten http://domain.de/seite1 http://domain.de/seite2/blahblubb ein Loginfeld vor
- Benutzer meldet sich auf einer der Seiten an, mit dem Benutzernamen und passwort aus der phpbb Datenbank
- Seite überprüft auf Korrektheit der Daten mit phpBB Routine <== auth->login($user, $pass);
- Seite erstellt eine Session über phpBB Routine, so dass bei einem wechsel auf http://domain.de/forum der benutzer bereits angemeldet ist <== das Problem....