Edgar Ehritt: Schleife beim Einloggen

Beitrag lesen

Hallo Johny7,

Kann mir jemand den Hintergrund beschreiben, warum so eine Schleife auftritt?

das ist denkbar einfach erklärt:

Dein Script setzt auf die Existenz der Variablen $PHP_AUTH_USER. Jedoch spricht die Dokumentation PHPs von $_SERVER['PHP_AUTH_USER']. Weiterhin ist zu lesen, dass HTTP-Authentifizierung durch PHP nur verfügbar ist, wenn PHP als Apache-Modul läuft. Das ist zwar nicht hundertprozentig korrekt, entspricht aber den Konfigurationen der allermeisten Webserver-CGI-Anbindungen. Wenn PHP tatsächlich als Apachemodul laufen sollte, was Du mit echo php_sapi_name(); überprüfen kannst, Solltest Du Dein Script auf $_SERVER['PHP_AUTH_USER'] umstellen.

Wie es derzeit für mich als Außenstehender aussieht, ist entweder die Variable $_SERVER['PHP_AUTH_USER'] auch bei einem Login nicht vorhanden (PHP wird via CGI angesprochen), oder $PHP_AUTH_USER wird einfach nur nicht gefunden. Letzteres liegt an der Konfiguration von register_globals.

Was auch letztendlich zutreffen mag, führt in Deinem ersten Script zu der Schleife. Es ist nämlich egal, ob jemand sich noch gar nicht versucht hat einzuloggen, oder Nutzername und Passwort nur nicht erkannt werden bzw. falsch sind, denn sowohl im Anweisungsblock unter IF als auch im Anweisungsblock unter ELSE wird immer der HTTP-Header "HTTP/1.0 401 Unauthorized" ausgegeben. Dieser sorgt dafür, dass der Browser immer wieder eine Aufforderung zum Einloggen ausgibt.

Sollte auch Dein zweites Script immer wieder dafür sorgen, dass eine Aufforderung zum Einloggen am Browser ausgegeben wird, existiert die Variable $PHP_AUTH_USER tatsächlich nicht. Versuche es also bitte mit $_SERVER['PHP_AUTH_USER']!

Gruß aus Berlin!
eddi