Seite 1 von 1

Problem bei phpBB Login Integration

Verfasst: 21.07.2006 13:27
von Mik3e
Hi zusammen,

Ich hoffe ich bin hier im richtigen Thread. Ich habe die gesamte Registrierungs-Routine des phpBB in den Registrierungs-Prozess einer bestehenden Seite integriert.

Klappt soweit auch wunderbar allerdings müssen sich die User derzeit zwei mal einloggen (einmal auf der Seite und dann nochmals im Forum).

Um mit dem "normalen" Login auch gleichzeitig die Session für das Forum anzulegen gibt es hier ne gute Doku, an die ich mich gehalten habe: http://www.phpbb.de/doku/kb/integration

Aber: Klappt nicht.
Die Einträge werden passend generiert, die SID wird beim Aufruf des Forums übergeben und dennoch ist man nicht eingeloggt.

Sieht nach dem Login beispielsweise so aus:

Datensatz in der Tabelle phpbb_sessions:
session_id=dc4da8c44c0b7ea4fe4a115084ae16e9
session_user_id=1
session_start=1153480286
session_time=1153480286
session_ip=51df95aa
session_page=0
session_logged_in=1
session_admin=0

Der Aufruf des Forum dazu lautet folgendermaßen:
http://www.kopfgeld.at/forum/index.php? ... 5084ae16e9

Und dennoch ist man im Forum dann nicht angemeldet... Und ich hab keinen Tau warum.

Ich verwende die Version 2.0.19 und habe auch die Tabelle phpbb_sessions_keys gesehen. Keine Ahnung ob die damit etwas zu tun hat.

Ich hoffe hier hat irgendjemand eine Idee oder einen Tipp für mich.. Ist sicherlich nur eine Kleinigkeit..

Danke vorweg & Ciao,
Mike

Problemlösung?

Verfasst: 04.05.2007 11:50
von tschortschi
hat schon jemand eine Lösung für das Problem?
Stehe auch davor und hab echt keinen Plan wies weitergeht!

Hab das Login auf meiner externen Seite eingebaut und auch die benötigten php- Includes eingetragen, sowie alle variablen abgefragt und so weiter
aber ich bekomme es nicht hin wenn ich mich z.B. extern einlogge und dann ins forum wechsle dass ich mich im forum nicht nocheinmal extra einloggen muss!
Gibt es hier irgend einen trick mit dem man die variablen übergeben kann oder redirects machen kann??
bitte um antworten ;)
lg

tschortschi :roll:

Verfasst: 04.05.2007 18:37
von StanleyG
Ich hatte mit demselben Problem lange und ergebnislos gekämpft, irgendwo habe ich dann gelesen, dass es daran liegt, dass Sessions nicht in eine andere Domain übergeben werden können. Und das Forum läuft meistens nicht unter derselben Adresse wie die Homepage, sondern oft mit homepage/forum oder so.
Ich habe das daher letztenendes anders gelöst.
Ich übergebe aus der Homepage über eine Form zwei Werte: user_id und user_pw (aber schon das verschlüsselte, nicht in Klartext) an eine Seite im Forumverzeichnis, die ich selbst erstellt habe (wechsel.php).
Diese Seite prüft in der Datenbank, ob die user_id und user_pw zusammen passen und meldet bei Erfolg den User an (startet Session).

Hier ist der Code für die wechsel.php:

Code: Alles auswählen

// Do phpBB stuff
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$phpbbid = $_REQUEST['user_id'];
$user_pw=$_REQUEST['user_pw'];
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
$user_ip = encode_ip($client_ip); 
$sql="select user_password from phpbb_users where user_id='$phpbbid'";
	if (!$result = $db->sql_query($sql)) {
		message_die (GENERAL_ERROR, 'Could not retrieve login information', '', __LINE__, __FILE__);
	}
	while ($row = $db->sql_fetchrow($result)) {
		$pw=$row['user_password'];
	}
	if ($user_pw != $pw) {
		message_die (GENERAL_ERROR, 'Could not retrieve password information', '', __LINE__, __FILE__);
	}
$session_id = session_begin($phpbbid, $user_ip, PAGE_PORTAL, FALSE, 0, 0);

if( $session_id )
{   
   $url = "portal.php";   
   redirect(append_sid($url, true));
}
else
{
   message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
} 	
und hier ist der Code für die Form zum Wechseln ins Forum:

Code: Alles auswählen

		echo "<form action=\"http://www.meinedomain.de/wechsel.php\" method=post target=\"_new\">\n";
		echo "<input type=submit value=\"Klicken Sie hier, um ins Forum zu wechseln\">\n";
		echo "<input type=\"hidden\" name=\"user_id\" value=\"$user_id\">\n";
		echo "<input type=\"hidden\" name=\"user_pw\" value=\"".$pw[0]."\">\n";
		echo "</form>";
Damit funktioniert der Wechsel von der Homepage zum Forum problemlos.
Der Wechsel mit SID wäre wahrscheinlich sicherer, funktioniert nur leider nicht (zumindest habe ich hier im Forum nur negative Äußerungen gelesen).


StanleyG