moin leute,
ich habe ein kleines programm gecodet, in das sich die benutzer des forums einloggen können (stichwort: login von phpbb benutzen).
hierfür hab ich das formular benutzt, das in der knowledgebase beschrieben ist.
wenn ich mich jetzt da mit einem benutzer einlogge, der auch im forum registriert ist, komme ich zwar auf die startseite meines programms (dort wird mir auch mein benutzername ausgegeben), wenn ich diese seite dann aber mit 'rechtsklick->aktualisieren' reloade, erscheint nicht mehr mein username, sondern Anonymous.
in der db ist in der session-tabelle ein eintrag mit meiner id (habe mich ja auch erfolgreich eingeloggt), aber jedesmal, wenn ich die seite reloade erscheint ein neuer eintrag mit der id -1 also Anonymous (das werden also mit jedem mal reload ein eintrag mehr).
wenn ich die seite dann komplett reloade, lande ich wieder auf meiner login-seite. wenn ich mich dann nochmal einlogge, klappts auch im weiteren verlauf der applikation.
dies passiert nur auf dem rechner im netz - also beim entwickeln lokal hat das einwandfrei gefunzt.
grobe architektur:
-> index.php:
$userdata['session_logged_in'] wenn ja -> home.php, sonst -> login.php
-> login.php
check ob in forum
start session-management
(also der code aus der vorlage für in phpbb eingebundene seiten)
-> ausfüllen des formulars mir redirect auf home.php
es scheint also irgendwie, als ob ich die session nicht richtig initialisiert kriege, oder sie mir zwischenzeitlich wieder verloren geht...
vielleicht weiß ja wer rat.
gruß, dude
abgefahrenes login-problem...
nein hab ich nicht...
das erledigt leidiglich ein einfach header:location[...]
der code ist folgender - index.php:
-> login.php
die datei 'returntor4fdb.php' leigt im phpbb-verzeichnis und leitet dann wieder in mein applikationsverzeichnis weiter - das hab ich so gemacht, weil ich dahcte es gäbe vielleicht schwierigkeiten. wenn man in das redirect-feld direkt den rlativen pfad eingibt.
jetzt ist es so, dass wenn sich ein user im forum einloggt er nicht als logged in erkannt wird, wenn er die anwendung aufruft.
deshalb wird dann ein neuer eintrag in der sessions-tabelle erzeugt.
im forum steht dann bei wer ist online 'ein gast' und der eingeloggt benutzer, wobei der gast und der eingeloggte user ein und der selbse sind...
das erledigt leidiglich ein einfach header:location[...]
der code ist folgender - index.php:
Code: Alles auswählen
// check ob im forum
define('IN_PHPBB', true);
$phpbb_root_path = '../phpbb/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
if($userdata['session_logged_in']){
header("Location: home.php");
}
else{
header("Location: login.php");
}
Code: Alles auswählen
// check ob im forum
define('IN_PHPBB', true);
$phpbb_root_path = '../phpbb/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// Pfade
$_SESSION['r4ftobb_path']="../phpbb/";
$_SESSION['r4f_path']="returntor4fdb.php";
//r4fdb - Templates einlesen
$template->set_filenames(array(
'home' => 'r4fdb_home.tpl'
));
$template->set_filenames(array(
'head' => 'r4fdb_head.tpl'
//header datei
include("head.php");
$template->set_filenames(array(
'login' => 'r4fdb_login.tpl'
));
// Template-Variablen zuweisen
$template->assign_vars(array(
'PATH' => $_SESSION['r4ftobb_path'],
'PATH1' => $_SESSION['r4f_path'],
'L_LOGIN' => 'Falls du noch keinen Benutzernamen und kein Passwort hast, musst du dich im Forum <a href="'.$_SESSION['r4ftobb_path'].'profile.php?mode=register">Registrieren</a>'
));
$template->pparse('login');
jetzt ist es so, dass wenn sich ein user im forum einloggt er nicht als logged in erkannt wird, wenn er die anwendung aufruft.
deshalb wird dann ein neuer eintrag in der sessions-tabelle erzeugt.
im forum steht dann bei wer ist online 'ein gast' und der eingeloggt benutzer, wobei der gast und der eingeloggte user ein und der selbse sind...
So geht das nicht...
Du checkst jetzt, ob der User eingeloggt ist. Ist er da, schickst Du ihn per Header() ganz wo anders hin und der User verläßt den "überwachten Bereich des Forums". Somit ist er "unsichtbar" für das phpBB.
Der User könnte ja auch die home.php direkt aufrufen.
Du mußt den Quellcode (den, den Du mit "in der index.php" gecodet hast) in JEDER Seite einbauen, auf die der User landet.
Grüße
Dennis
Du checkst jetzt, ob der User eingeloggt ist. Ist er da, schickst Du ihn per Header() ganz wo anders hin und der User verläßt den "überwachten Bereich des Forums". Somit ist er "unsichtbar" für das phpBB.
Der User könnte ja auch die home.php direkt aufrufen.
Du mußt den Quellcode (den, den Du mit "in der index.php" gecodet hast) in JEDER Seite einbauen, auf die der User landet.
Grüße
Dennis
ja - das ist schon in allen dateien drinn...
es ist so, dass wenn ich mich in einem browserfenster im forum einlogge (was normal klappt), und dann in einem anderen fenster meine anwendung öffne, erkennt der nicht, dass ich eingeloggt bin und erzeugt einen neuen eintrag in der session-tabelle.
wenn ich mich dann innerhalb meiner anwendung nochmal einlogge, habe ich zweimal den benutzer in der db stehen, was dazu führt, dass wenn ich mich anschließend im forum wieder auslogge, zwar unten wieder das login-forumlar erscheint (ich also eigentlich ausgeloggt bin), aber aufgrund der zweiten session, immer noch der user-name als eingeloggt erscheint.
ich habe den cookie-pfad auch auf / gelegt.
es sind auch nur die üblichen zwei cookies im verzeichnis - komisch ist das...
es ist so, dass wenn ich mich in einem browserfenster im forum einlogge (was normal klappt), und dann in einem anderen fenster meine anwendung öffne, erkennt der nicht, dass ich eingeloggt bin und erzeugt einen neuen eintrag in der session-tabelle.
wenn ich mich dann innerhalb meiner anwendung nochmal einlogge, habe ich zweimal den benutzer in der db stehen, was dazu führt, dass wenn ich mich anschließend im forum wieder auslogge, zwar unten wieder das login-forumlar erscheint (ich also eigentlich ausgeloggt bin), aber aufgrund der zweiten session, immer noch der user-name als eingeloggt erscheint.
ich habe den cookie-pfad auch auf / gelegt.
es sind auch nur die üblichen zwei cookies im verzeichnis - komisch ist das...