Hi,
#!/usr/bin/perl -w
use strict;
Ist klar. Geb ich zu. So ist's besser, aber ohne gehts auch.
ja. Du merkst nur die Fehler nicht so schnell.
Siehe RFC 1738, http://www.ietf.org/rfc/rfc1738.txt:
"No user name or password is allowed."
...ist nicht rfc-konform - aber nicht verboten. RFC ist ja schließlich kein Gesetz sondern "nur" ein Standard.
Ein _technischer_ Standard, der verbindlich zur Entwicklung von Geräten (Hard- wie Software) verwendet wird.
Diese Lösung ist wahrlich nicht optimal (ich weis nur leider keine andere).
Laß die Authentifizierung vom Client ausgehen, nicht vom Server. Dieser muß nur mitteilen, daß der Client sich authentifizieren _soll_, darf es ihm aber auf keinen Fall abnehmen.
Der IE legt übrigens das gleiche krasse Fehlverhalten an den Tag, wenn [...]
...aber wenn ich es in die Adresszeile eintrage oder mit meinem JS-Script probiere gehts auch mit dem IE.
Genau das habe ich gesagt, ja :-)
Daher dachte ich, daß es mit meiner CGI-Lösung eigentlich auch gehen sollte.
Zum Glück nicht - denn das ist ein hervorragender Grund, keinen groben Unfug an Clients zu jagen, die damit noch weniger anfangen können, und währenddessen möglicherweise irgendwelche Systeme zu zerhackstückeln, von deren Existenz Du noch nicht mal was geahnt hast.
Wer Standards mit Füßen tritt, darf sich über "ungewöhnliches" Verhalten nicht wundern. Du wußtest wahrscheinlich nicht, daß Benutzername und Passwort in HTTP-URLs explizit untersagt sind - aber jetzt ist es Dir bekannt.
Jetzt habe ich das Problem, daß es für meine Seite mehre Benutzer gibt. Jeder Benutzer hat sein eigenes Verzeichnis und in eben dieses muß er nach der Anmeldung (automatisch) gelangen.
Das kannst Du mittels Server-Konfiguration machen. Stichwort mod_rewrite; vergleiche Doku unter http://www.apache.org/. Im Zweifel kannst Du auch ein PHP-Script verwenden, sofern dieses als Apache-Modul eingebunden ist - mit der CGI-Version klappt es m.W. nicht.
Ein Login über ein formlar währe zwar das höchste der Gefühle,
Das müßte mittels PHP lösbar sein.
Die HTTP-Authentifizierung zwischen Browser und Server kannst Du nicht auf nur einer Seite vornehmen. Der Browser muß wissen, wie er sich bei Folgeseiten authentifizieren muß - und die üblichen Mechanismen erfordern dazu die explizite Benutzereingabe. Das ist aber nicht lästig, sondern sinnvoll.
Der Browser bzw. der Server "merken" sich ja Deine Daten (bis zum Schließen des Browsers; kannst man ja auch ansehen => REMOTE_USER) und übergibt Sie dann bei Bedarf wieder an die Folgeseiten. Das funzt ja alles wenn ich das eben nur in die Adresszeile eintrage.
Korrekt; bis auf daß die Eingabe einer ungültigen URL nur bei sehr wenigen Browsern zu sinnvollen Ergebnissen führt. Wie erwähnt wird dort aus "http://bla:blub@domain.de/pfad" ein gültiges "http://domain.de/pfad" mit den entsprechenden Headern, die auch bei manueller Eingabe von "bla" und "blub" gesendet werden. Aber noch mal:
*Dies geschieht nur bei sehr wenigen Browsern!*
Überall sonst, wo eine ungültige URL durch's Netz geschickt wird - etwa von Deinem Script aus mittels Location-Header - sind die Konsequenzen für involvierte Systeme nicht abzusehen!
Was natürlich auch noch eine Möglichkeit währe, das ist ein benutzerabhängiges redirect mittels mod_rewrite.
Ah :-)
Mit dem Ding kenne ich mich aber leider nicht aus. Du vielleicht?
Meine Erfahrung ist da auch eher gering - aber die Doku hat mir bisher immer geholfen; auch wenn es bisweilen etwas gedauert hat. Ich empfehle einen lokalen Testserver.
Auf jeden Fall schon mal Danke für die letzte Antwort.
Gern geschehen!
Cheatah