Seite 1 von 1

Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 13:45
von Glanter
Hiho

Da wir recht unzufrieden sind, dass man sich mehrmals bei unserer Homepage einloggen muss, versuch ich alles komplett neu auf zu bauen.
http://ddm.glanter.ch

Dabei will ich die Loginverwaltung von phpBB3 für die ganze Seite brauchen.

Vorgestellt habe ich mir, dass ich irgendwie die SessionID von phpBB3 herausfinden kann, damit in '_sessions' die 'session_user_id' entnehmen und damit eine eigene Datenstruktur neben phpbb aufbauen kann.

Integriert wird das Forum über ein dynamisches iframe.
Testsite: http://www.glanter.ch/sandbox/ddm/index.php?p=forum

Nur habe ich keine Ahnung wie ich von phpBB3 die SessionsID herausfinden kann oder eine Vorgeben indem ich vorher eine Session starte.
z.B. hat meine Seite 1ef61434e5*** und phpBB3 97011455e8***

Habe zwar schon gesehen dass man eigenen php Code einbinden kann. Aber da die Seite nicht immer das Forum aufruft geht das warscheinlich nicht.

Hoffe dass sich da jemand besser aus kennt als ich :roll:

Gruss
Glanter

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 14:02
von Unimatrix_0
Forum-FAQ "phpBB 3.0: Mod-Bastelstube"
Vorlage für in phpBB3 eingebundene Seiten - wenn du das Session-Management von phpBB3 in externen Seiten (z.B. CMS, Homepage, Gästebuch) nutzen möchtest.
oder du versuchst:

[Snippet] Externer Login / Logout für phpBB3

je nachdem, was dir einfacher erscheint :)

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 14:09
von m4ddy
oha... noch 'n Caldari... die findet man echt überall :lol:

Du könntest aber auch mal beim Anbieter deines CMS nachfragen, die benutzen ja ebenfalls ein phpbb in Verbindung mit ihrem CMS, also sollten die ja schon eine gute Lösung parat haben, bleibt nur noch die Frage ob sie das rausrücken wollen :wink:

gruß
m4ddy

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 14:25
von Glanter
Das einzige was die können ist dynamic iframe was ich etwas abändern werde und eine Registrierungsbridge.

Aber dass man nur ein Login für beide Seiten braucht können sie noch net. Deshalb baue ich jetzt was eigenes auf das sauberer aufgebaut ist und nicht von WoW kommt :P

Das Externe Login sieht ganz nach dem aus welches ich brauchen kann.
http://www.lpi-clan.de/viewtopic.php?f=26&t=3550#p16648

Das Login geht zwar, aber ich hänge noch an der weitergabe der Sessionsid die beim login erzeugt wird.

Code: Alles auswählen

<?php
    /**
    *
    * externes Login script fuer phpBB3
    * Kann zur WebSite Authentifizierung benutzt werden
    *
    */
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    require($phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    //Abfragen von ggf. uebermittelten Parametern
    $username     = request_var('username', '', true);
    $password     = request_var('password', '', true);
    $autologin    = (!empty($_POST['autologin'])) ? true : false;
    $viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;

    $logout     = request_var('mode', '');

    //Wenn username und passwort uebergeben worden sind, starte einen Anmeldeversuch
    if (isset($username) && isset($password))
    {
        $auth->login($username, $password, $autologin, $viewonline);
    }

    //Wenn ueber einen Link der mode=logout lautet und eine SID uebergeben wurde, starte das ausloggen des Users
    if ($logout == 'logout')
    {
        $user->session_kill();
    }

    /**
    *
    * Optionaler Code
    * Prüfe ob User eingeloggt ist oder nicht
    *
    */

    if ($user->data['is_registered'])
    {
        // Hier steht der Code für ein erfolgreich eingeloggter User
        echo "Du bist angemeldet.<br /><br />";
        echo "<a href=\"".append_sid('../index.php?p=forum')."\">Zurück zur Hauptseite</a><br /><br />";

        //Optionaler Code zum Ausloggen.
        //Es ist wichtig, das die Session ID mit der Funktion append_sid() uebergeben wird.
        echo 'Zum Abmelden <a href="'. append_sid("{$phpbb_root_path}login.$phpEx", "mode=logout") . '">hier</a> klicken';
    }
    else
    {
        //Wenn Du hier landest bist Du nicht eingeloggt.
        echo "Du bist abgemeldet<br /><br />";
        echo "<a href=\"../login.html\">Nochmal versuchen?</a>";
    }

    ?>
echo "<a href=\"".append_sid('../index.php?p=forum')."\">Zurück zur Hauptseite</a><br /><br />";
Das hängt die SID leider nicht an... Wenn dies geht bin ich vollum glücklich und kann mit dem start der HP beginnen ;)

Geplante vorgehensweise:
- seite aufrufen
- per externes loginscript einlogen
- das externe script erzeugt bei phpBB3 die Sessionsid mit allem drum und dran
- das Script leitet auf die startseite zurück inc SID die ich dann verwenden kann
- mit der SID kann ich auf die Datenbank zugreifen und die Userid holen -> kann meine eigenen Tabellen aufbauen

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 14:51
von Unimatrix_0
wenn ich es richtig im Kopf habe wird per append_sid() nur die Session-ID angehangen wenn es nötig ist, zB kein speichern im Cookie möglich ist o.ä.

€dit: meine Erinnerung stimmt
http://wiki.phpbb.com/Append_sid
Append sid is used whenever you send a link to a template, including the action attribute value of html forms. This function will activlty determine whether a Session ID needs to be appended to the URL in order to preserve the current session.

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 15:00
von Glanter
Ah jetzt hat sie plötzlich die SID angehangen und vorher nicht.

Und phpBB3 SID und die auf meiner Seite stimmen jetzt sogar überein *freu*

Muss das aber noch besser testen. Wenn das nicht jedes mal korrekt funzt muss ich da nochmal dahinter...


Bin hier vorerst fertig, kann jetzt mit dem aufbau der eigenen Seite anfangen.

Thx

Re: Homepage um phpBB3 aufbauen

Verfasst: 23.12.2009 15:32
von Glanter
Hab doch noch ein Problem. Betrifft aber mehr meine Unwissenheit über php :roll:

Wenn ich die SID per session_id() starte, wird diese nicht im Cookie abgespeichert.
Die SID soll aber weiterhin bestehen bleiben. Soll das so sein oder was mache ich falsch?

Das Cookie manuell setzen macht mich unsicher...

Code: Alles auswählen

if(isset($_GET['sid'])){
  session_id($_GET['sid']);
  setcookie("PHPSESSID", $_GET['sid'], time()+30*24*60*60);
}else{
  session_start();
}