Also bevor wir (weiter) aneinander vorbeireden:
Ja, ich vermute, daß wir schon in Punkt 2 aneinander vorbeireden:
- Server, Antwort: 401 und "<html>..Authentifizierung nötig..bla..bla..</html>"
ich bekomme keine Authentifizierungsaufforderung vom SERVER. Das macht mein Script. Ich habe gar keine geschützten Verzeichnissse. Man kann sich von jeder Seite aus über ein kleines Icon einloggen. Jeder Seitenaufruf ruft meine Loginklasse auf, und die prüft, ob der User schon eingelogt ist oder sich gerade einloggen will oder auslogt etc. Bevor es jetzt von allen Seiten Gezeter gibt: JA, man kann sich bei mir AUSloggen, ohne den Brwoser zu schließen und es funktioniert wunderbar :-)
Mein PHP-Script schickt also diesen Header:
Header("WWW-Authenticate: Basic realm="Anmeldebereich"");
ist das der falsche?
und im Folgenden wird weiter abgefragt, ob die Zugangsdaten stimmen etc. Das funktioniert ja auch alles perfekt. Nur bei Abbruch und beim ersten Loginaufruf bekomme ich KEINE Werte für User & Passwort, nichtmal einen Leerstring. Insofern unterscheiden sich diese beiden Fälle schon vom leer abgeschickten Fenster (Leerstrings)
- Neuanforderung
Erkennung: auth-Variablen existieren nicht, IP unbekannt (oder kein Cookie gesetzt).
ja, funktioniert.
Aktion: 401 (Authentifizierung nötig) und Seite schicken (Inhalt siehe unten).
keine Ahnung, ob ich da den richtigen schicke...
Browser: Zeigt Login-Dialog, mitgeschickte Seite wird (üblicherweise) nicht angezeigt.
- Abbrechen gedrückt
Erkennung: Nicht möglich, da der Browser keine weitere Anfrage an den Server schickt.
Aktion: Nicht möglich, da keine Erkennung.
Browser: Zeigt die Seite an, die beim letzten 401 geschickt wurde.
Und die wird bei mir nicht angezeigt, sondern erscheint nur im Quelltext. Ich dachte, daß da vielleicht an der Stelle der Server dazwischen kommt, weil er jetzt von von einem Authentifizierungsversuch mitbekommt. Also habe ich in der httpd.conf eine Zeile eingfügt, die im Fehlerfall auf meine Fehlerseite leiten soll:
ErrorDocument 401 /fehlerseite.html
Das hat aber nichts bewirkt.
Wichtig ist Punkt 2, nämlich dass Du keine Möglichkeit hast, direkt auf den Abbruch zu reagieren. Du kannst lediglich vorausschauend mit den 401-Fehlern bei 1, 3 und 4 einen sowohl dem Abbruch als auch der Authentifizierungsaufforderung angemessenen Text liefern. Das könnte in Deinem Fall auch die gewünschte Seite sein,...
Ja, in dem Zweig für das leer abgeschickte Fenster funktioniert das auch. Da kann ich auf meine Fehlerseite weiterleiten und sie ist SICHTBAR. In dem anderen Zweig (Abbruch) aber merkwürdigerweise nicht. Da kommt irgendwas dazwischen, wenn die Seite geschickt wird. Tests mit
die("irgendein Text");
beweisen, daß ich wirklich diesen Zweig erreiche. Aber auch dieser Ausgabetext erscheint NUR IM QUELLTEXT.
Bitte _keine_ Weiterleitungen, dafür besteht keine Veranlassung.
Aber wie soll ich denn auf die Fehlerseite kommen?