User Authentifizierung übernehmen

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Demonllama
Mitglied
Beiträge: 5
Registriert: 30.10.2006 12:21

User Authentifizierung übernehmen

Beitrag von Demonllama »

Ich habe in eurer Dokumentation den Artikel gefunden um die User-Login-Informationen für eigene Seiten abzufragen.
Jetzt habe ich mir daraus ein kleines Testscript geschrieben und das sagt mir immer, das aktuell kein Benutzer angemeldet sei.
Das verwundert mich, da zumindest ein Cookie mit meinem Benutzer gesetzt ist.
Was mache ich falsch?

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = '../../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

echo ("$userdata[user_id]<br>$userdata[username]<br>$userdata[session_id]<br>$userdata[session_logged_in]");

if  ($userdata['session_logged_in'])
{
    echo("<br><br>Benutzer ist angemeldet!");
}
else
{
    echo("<br><br>Benutzer ist nicht angemeldet!");
}

?>
Das board ist phpBB2 Version 2.0.19 von phpBB.com

Getestet wurde mit IE 6.0 und Firefox 1.5.0.4 hinter einem Proxy.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Die Abfrage dieser Daten bedeutet ja nicht zwingend, dass man auch eingeloggt ist. Nur wenn du tatsächlich eingeloggt bist sollte diese Anzeige kommen, allerdings auch wenn du als Gast angemeldet sein solltest (daher wird in den phpBB Dateien auch häufig auf $userdata['user_id'] == ANONYMOUS geprüft). Sofern der Pfad zum Forum stimmt sieht aber alles richtig aus, wenn nicht dürftest du aber ein paar Fehlermeldungen bekommen, da dann die includes nicht funktionieren würden.

Mach doch vor dem Echo (am besten vor der If Abfrage) mal ein

Code: Alles auswählen

include($phpbb_root_path . 'includes/page_header.'.$phpEx);
Dann kannst du sehen, was der page_header zu deinem LogIn Status sagt.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Demonllama
Mitglied
Beiträge: 5
Registriert: 30.10.2006 12:21

Beitrag von Demonllama »

OK, das ist mal interessant:
Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 484

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 486

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 487
Und der Output des Arrays:
-1
Anonymous
cd745d995cb9316141acc401b92fd385
0
Der Pfad stimmt ziemlich sicher. Der Forenkopf wird angezeigt, aber ohne Stylesheets und ohne Grafiken.
Jetzt frag ich mich aber wieso die headers schon mal gesendet sein sollen? :o

Das übersteigt mein Verständnis von PHP ehrlich gesagt. Ich will lediglich einen authentifizierten User in meine Applikation übernehmen. :)

<edit>
Ich sehe gerade das die Links im übergebenen Forenkopf auch nicht passen und in die neue Seite hineinlaufen. Das ist natürlich Käse. Eine abolute Pfadangabe funktioniert aber auch nicht.
</edit>
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Demonllama hat geschrieben:OK, das ist mal interessant:
Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 484

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 486

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/59636/www.llamalabs.de/wow/test/login_test.php:13) in /is/htdocs/59636/www.llamalabs.de/forum/includes/page_header.php on line 487
Und der Output des Arrays:
-1
Anonymous
cd745d995cb9316141acc401b92fd385
0
Machst du irgend eine Ausgabe vor dem Aufruf? Nur so ist diese ausgabe nämlich zu interpretieren. An der -1 siehst du dass du als Gastuser eingetragen bist.
Der Pfad stimmt ziemlich sicher. Der Forenkopf wird angezeigt, aber ohne Stylesheets und ohne Grafiken.
Jetzt frag ich mich aber wieso die headers schon mal gesendet sein sollen? :o

Das übersteigt mein Verständnis von PHP ehrlich gesagt. Ich will lediglich einen authentifizierten User in meine Applikation übernehmen. :)
Nur keine Panik s.o. Die Grafiken werden nicht gefunden, da wir uns in einem Verzeichnis befinden, in dem die Relativen Pfadangaben nicht funktionieren.
<edit>
Ich sehe gerade das die Links im übergebenen Forenkopf auch nicht passen und in die neue Seite hineinlaufen. Das ist natürlich Käse. Eine abolute Pfadangabe funktioniert aber auch nicht.
</edit>
Das war zu erwarten, schließlich befindest du dich in einem anderen Ordner, da funktionieren Relative Pfade nicht. Du musst den Page_Header natürlich auch nicht zwingend ausgeben, das sollte nur als OPTISCHE Hilfe dienen. Außerdem funktioniert das mit den Cookies nur dann, wenn vorher noch keine Daten zum User gesendet wurden, also auch keine Blanks oder ähnliches. Vor dem <?php darf sich rein gar nichts befinden in der Datei, keine Zeilenumbrüche, keine Blanks, nichts.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Demonllama
Mitglied
Beiträge: 5
Registriert: 30.10.2006 12:21

Beitrag von Demonllama »

Also meine login_test.php ist exakt so wie ich sie im ersten Posting gepostet habe. Sie hat keinen HTML-Header oder dergleichen. In der ersten Zeile ist <?php und in der zweiten dann das "define".

Wenn ich die Datei dann mit "./" als Pfad im Ordner des Forums starte gibt er mir den korrekten User als angemeldet aus. Die headers-Fehler kommen aber trotzdem.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Verlink einfach mal die Datei als text

Wenn ich mir die Seite Ansehe wird da wohl Text vorher ausgegeben:

Benutzer ist nicht angemeldet!
Das darf nicht!
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Demonllama
Mitglied
Beiträge: 5
Registriert: 30.10.2006 12:21

Beitrag von Demonllama »

Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ja dann ist wohl klar warum die Meldungen kommen:
Das erste echo kommt vor dem Include des Page_headers. Ich meinte das eigentlich so:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = '../../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

include($phpbb_root_path . 'includes/page_header.'.$phpEx);
if  ($userdata['session_logged_in'])
{
    echo("<br><br>Benutzer ist angemeldet!");
}
else
{
    echo("<br><br>Benutzer ist nicht angemeldet!");
}


echo ("$userdata[user_id]<br>$userdata[username]<br>$userdata[session_id]<br>$userdata[session_logged_in]");
?>
Aber wie gesagt, das brauchst du eigentlich nicht. Die Userdaten sind auch ohne Page_header vorhanden, das sollte nur als Test dienen.

Damit der User zwingend auf dieser Seite im Forum angemeldet sein muss müsstest du folgenden Code einfügen:

Code: Alles auswählen

if($userdata['user_id']==ANONYMOUS || ! $userdata['session_logged_in'])
{
$pfad_zur_seite =  "";//Hier den Pfad zur Seite eintragen
redirect(append_sid("login.$phpEx?redirect=$pfad_zur_seite",true));
}
Damit gelangt der User zu einem Loginschirm der ihn danach wieder zu dieser Seite weiterleiten sollte.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Demonllama
Mitglied
Beiträge: 5
Registriert: 30.10.2006 12:21

Beitrag von Demonllama »

Alles klar, vielen Dank für deine Hilfe. Ich hatte das Include ursprünglich auch vor der ersten Textausgabe. Die Anzeige war da auch schon korrekt. Ich habe das nach dem rumprobieren nur in der Position verändert.

Welche Info mir fehlte, war die Tatsache, das Trotz Cookie-Login für meine Seite eben kein Login gezählt wurde. Jetzt habe ich für meine Seite einen gültigen Login und auch Logout.

WUNDERBAR! :)

Das einzige Problem das ich jetzt noch habe ist die Tatache, das meine Seite eigentlich auf einer Subdomain liegt, aber nur mit der eigenen absoluten Pfadangabe funktioniert.
Das bekomme ich aber denke ich mal auch noch in den Griff.
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“