phpBB Login anderweitig erstellen.

exportforce

Avachangererfinder
ID: 68278
L
23 April 2006
256
22
Hi @ all.
Da ich 2 Projekte fusionieren muss, wollte ich es so arrangieren, das man sich auf der Mainseite auch mit den phpBB Daten einloggen kann und wollte die Session und Vars so erstellen das phpBB diese erkennt.

Weiss jemand Rat ?
 
Guck dir an wie phpBB die Sessions speichert :)arrow: phpbb_sessions), wie es die SessionId verwendet :)arrow: in den phpBB Datein rumschnueffeln, global.php ist sicher nen guter Ansatzpunkt, login.php auch), ggf. Userdaten des phpBBs auf deiner Hauptseite auslesen :)arrow: phpbb_users).

Anschliessend noch Cookies so setzen, wie sie phpBB verwendet (auch da sind die login.php und irgendeine Datei aus der global.php interessant).
 
Guck dir an wie phpBB die Sessions speichert :)arrow: phpbb_sessions), wie es die SessionId verwendet :)arrow: in den phpBB Datein rumschnueffeln, global.php ist sicher nen guter Ansatzpunkt, login.php auch), ggf. Userdaten des phpBBs auf deiner Hauptseite auslesen :)arrow: phpbb_users).

Anschliessend noch Cookies so setzen, wie sie phpBB verwendet (auch da sind die login.php und irgendeine Datei aus der global.php interessant).

Ja soweit war ich auch schon, aber ich finde die entsprechenden Variablen nicht und ich weiss auch nicht was phpBB2 WIRKLICH im endefekt nun GENAU braucht um den User als eingeloggt zu registrieren, wenn er sich "nur" über die Hauptseite einlogged.
 
Einen Sessioncookie und einen Eintrag in der phpbb_sessions Tabelle.

Danach im phpBB Code zu suchen sollte nicht sehr schwer sein... suchst nach _sessions und setcookie und hast es beisammen.. Eine Sache von ner viertel bis halben Stunde.
 
Einen Sessioncookie und einen Eintrag in der phpbb_sessions Tabelle.

Danach im phpBB Code zu suchen sollte nicht sehr schwer sein... suchst nach _sessions und setcookie und hast es beisammen.. Eine Sache von ner viertel bis halben Stunde.

Ja wenn ich es nach ner Stunde suchen gefunden hätte, würde ich es nicht posten und nach fragen. Ich habe schon einiges getestet, aber er nimmt die Session nicht die ich erstellt habe.
 
Code:
cd includes/
grep setcookie *

=> alles in session.php

session.php auf, springt mir session_begin ins Auge, runtergescrollt:

Code:
        //
        // Create or update the session
        //
        $sql = "UPDATE " . SESSIONS_TABLE . "
                SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin
                WHERE session_id = '" . $session_id . "'
                        AND session_ip = '$user_ip'";
        if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
        {
                list($sec, $usec) = explode(' ', microtime());
                mt_srand((float) $sec + ((float) $usec * 100000));
                $session_id = md5(uniqid(mt_rand(), true));

                $sql = "INSERT INTO " . SESSIONS_TABLE . "
                        (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin)
                        VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login, $admin)";
[...]

Noch weiter gescrollt:

Code:
        setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
        setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);

Aus was sich $sessiondata zusammensetzt ueberlass ich dir, wie das mit dem Autologin geht auch, aber wenn du session_begin gruendlich liest und ein paar print_rs reinbaust, findest dus schnell raus.
 
Ja nur hilft mir das einfach nicht weiter.
Auf einer anderen Seite wurde mir jetzt gesagt, das phpBB2 einen eigenen Session-Mechanismus nutze 8O
Aber weitere Antwort weiss ich da auch nicht :-/

Alles nur halbes.
Wie gesagt, ich schon einiges Versucht, aber ich finde keinen Weg.
Wenn es für dich ja ach so leicht zu verstehen ist, dann sag mir doch wie ich das phpbb-cookie auslese um es für mich auf den teil ausserhalb des Forums zu nutzen, oder sag mir, welche Variablen und welche Sessionvariablen existieren müssen damit phpBB2 es auch annimmt. :-?
 
Ich kann und werde dir hier keinen fertigen Code liefern.

Falls deine PHP-Kenntnisse nicht so schlecht sind, nimm dir einen Tag Zeit und lies die sessions.php, dort findest du _alles_ was du brauchst, wie du Cookies setzt, wie das phpBB die Cookies/Autologindaten/Sessiondaten prueft etc.

Falls du das aber nicht kannst empfehl ich dir, di einen Programmierer zu suchen der sich darum kuemmert, denn so banal ist das auch wieder nicht, dass man es ohne ernsthafte Kenntnisse sicher implementiert.
 
Ich kann und werde dir hier keinen fertigen Code liefern.

Falls deine PHP-Kenntnisse nicht so schlecht sind, nimm dir einen Tag Zeit und lies die sessions.php, dort findest du _alles_ was du brauchst, wie du Cookies setzt, wie das phpBB die Cookies/Autologindaten/Sessiondaten prueft etc.

Falls du das aber nicht kannst empfehl ich dir, di einen Programmierer zu suchen der sich darum kuemmert, denn so banal ist das auch wieder nicht, dass man es ohne ernsthafte Kenntnisse sicher implementiert.

Du bist echt witzig :D
*Nen Tag zeit nehmen*
So viel Zeit hab ich nicht. Gibt Menschen die arbeiten 8) :mrgreen:
Das du nur leise Hinweise gibst, weiss ich. Aber es gibt auch noch andere User und vielleicht auch welche drunter die mehr helfen können/wollen.
 
Haett ich den Code in der Schublade, wuerd ich ihn dir posten ;)

Hab da aber noch ne Idee, es gibt ja zahlreiche Portale, die das phpBB integrieren und auch die Benutzerdaten teilen - phpNuke ist jetzt vielleicht nicht das perfekte Beispiel um das, was dahinter steckt nachzuvollziehen - aber ich bin mir sicher, dass man da noch andere Sachen findet.

*hust* gerade mal gegooglet mit den Keywords "phpbb authentication"

First hit: https://www.phpclasses.org/browse/package/1532.html
 
Haett ich den Code in der Schublade, wuerd ich ihn dir posten ;)

Hab da aber noch ne Idee, es gibt ja zahlreiche Portale, die das phpBB integrieren und auch die Benutzerdaten teilen - phpNuke ist jetzt vielleicht nicht das perfekte Beispiel um das, was dahinter steckt nachzuvollziehen - aber ich bin mir sicher, dass man da noch andere Sachen findet.

*hust* gerade mal gegooglet mit den Keywords "phpbb authentication"

First hit: https://www.phpclasses.org/browse/package/1532.html
Da ich phpNuke selber nutze war das auch meine erste Idee, aber die haben das ja komplett umgestripped und daher ist der Code für diesen Fall "wertlos".
Die Klasse hab ich auch schon gefunden aber mir wurde gesagt, das sie total buggy ist und man damit sehr leicht in die Accounts kommt :?
 
Also ich hab das jetzt einfach mal aufgesetzt, aber nach dem ich jetzt den ganzen scheiss Tag an diesem einen lächerlichen Tag verschwendet hab bringt mich das grad zur Weissglut... Das ist wohl auch nur halb fertig, denn er will ne Klasse ansprechen die überhauptnicht existiert. Hier mal die Files (ohne Kommentage, sind bloss platzraubend)

login.php
PHP:
<form action="log.php" method="post">
<input type=text name=username><br>
<input type=text name=password><br>
<input type=submit value="klicken">
</form>

die logclass.php
PHP:
<?
class PHPBB_Login {
    function PHPBB_Login() {
    }

    function login( $phpbb_user_id ) {
        global $db, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
        require_once( './forum/config.php' );
    
        define('IN_PHPBB',true);

        $phpbb_root_path = "./forum/";
        
        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );

        return session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );
    
    }

    function logout( $session_id, $phpbb_user_id ) {
        global $db, $lang, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
        require_once( './forum/config.php' );
        define('IN_PHPBB',true);
        $phpbb_root_path = "./forum/";
        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );
        session_end( $session_id, $phpbb_user_id );
        setcookie( $board_config[ "cookie_name" ] . "_sid", "", time() - 3600, " " );
        setcookie( $board_config[ "cookie_name" ] . "_mysql", "", time() - 3600, " " );

    }

}

?>

die log.php (wo man jetzt eigentlich eingelogged werden müsste)

PHP:
<?php
session_start();
include("logclass.php");
$user = new User();
$user->login( $_POST['username'], $_POST['password'] );
$phpBB = new PHPBB_Login();
$phpbb->login( $user->id );

echo $user->id;
?>

Dieses ist aus der example.php von dem genommen... nur weiss ich jetzt nicht was er mit der User klasse will, die es garnicht gibt
 
Also ich hab das jetzt einfach mal aufgesetzt, aber nach dem ich jetzt den ganzen scheiss Tag an diesem einen lächerlichen Tag verschwendet hab bringt mich das grad zur Weissglut... Das ist wohl auch nur halb fertig, denn er will ne Klasse ansprechen die überhauptnicht existiert. Hier mal die Files (ohne Kommentage, sind bloss platzraubend)

login.php
PHP:
<form action="log.php" method="post">
<input type=text name=username><br>
<input type=text name=password><br>
<input type=submit value="klicken">
</form>

die logclass.php
PHP:
<?
class PHPBB_Login {
    function PHPBB_Login() {
    }

    function login( $phpbb_user_id ) {
        global $db, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
        require_once( './forum/config.php' );
    
        define('IN_PHPBB',true);

        $phpbb_root_path = "./forum/";
        
        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );

        return session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );
    
    }

    function logout( $session_id, $phpbb_user_id ) {
        global $db, $lang, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
        require_once( './forum/config.php' );
        define('IN_PHPBB',true);
        $phpbb_root_path = "./forum/";
        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );
        session_end( $session_id, $phpbb_user_id );
        setcookie( $board_config[ "cookie_name" ] . "_sid", "", time() - 3600, " " );
        setcookie( $board_config[ "cookie_name" ] . "_mysql", "", time() - 3600, " " );

    }

}

?>

die log.php (wo man jetzt eigentlich eingelogged werden müsste)

PHP:
<?php
session_start();
include("logclass.php");
$user = new User();
$user->login( $_POST['username'], $_POST['password'] );
$phpBB = new PHPBB_Login();
$phpbb->login( $user->id );

echo $user->id;
?>

Dieses ist aus der example.php von dem genommen... nur weiss ich jetzt nicht was er mit der User klasse will, die es garnicht gibt

hast du nicht am letzten echo die klammern vergessen?