PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Login in htaccess-Verzeichnis


TIIUNDER
24.07.2007, 22:48:20
Hallo alle samt,
ich habe die letzten Stunden das halbe Netz auf den Kopf gestellt (na gut so viel war es wohl doch nicht) und nun habe ich absolut die Schnauze voll und hoffe, dass mir hier vielleicht jemand helfen kann.

Es geht um folgendes:
Ich möchte gerne anstelle des hässlichen schnöden Standard-Fensters eines htaccess-Passwortschutzes ein kleines Formular mit PHP Script basteln, mit dessen Hilfe ich mich in dieses geschützte htaccess-Verzeichnis einlogge. Also kurz: ich möchte mich in ein htaccess-Verzeichnis mit Passwort und Benutzer per PHP-Script einloggen.

Im Netz habe ich auch schon das hier gefunden
http://user:pass@www.webseite.de

Aber leider lässt dies der IE nicht mehr zu und Nutzer mit IE stehen im Wald, also kann ich damit nix anfangen, obwohl es mir geholfen hätte

Ich bin außerdem auf folgendes SCript gestoßen:http://www.webmaster-eye.de/fsockopen-mit-htaccess-Anmeldung.259.artikel.html

Aber das funktioniert bei mir aus irgendeinem Grund nicht, da es sich einfach nur abrechnet und nix passiert.

Vielleicht kann mir einer mit den beiden Ansätzen helfen oder kennt eine ganz andere Lösung. Das wäre echt super!!!

Isocrateus
25.07.2007, 02:42:46
Hi, etwas umgeschrieben funktioniert Dein Quelltext, wie folgt, ganz gut: <?
//host/server
$host = "www.meinserver.de";

//die URI, auf die dann zugegriffen werden soll
$documentpath = "/folder1/folder2/xyz.htm";

//Benutzername vom .htaccess login
$username = "user";

//Passwort vom .htaccess login
$passwort = "pass";

$sock = fsockopen($host, 80, $errno, $errstr, 5);

//Fehler und Skript beenden, wenn keine Verbindung
if (!$sock) echo "$errstr ($errno)";
else {

$userpass = base64_encode($username.":".$passwort);

fputs($sock, "GET ".$documentpath." HTTP/1.1\r\nHost: ".$host."\r\n");
fputs($sock, "Authorization: Basic ".$userpass."\r\n\r\n");

//Header auslesen

do {
$line = chop(fgets($sock));
} while (!empty($line) and !feof($sock));

//Daten auslesen

$result = array();

while (!feof($sock)) {
$result[] = fgets($sock);
}

// Socket schliessen
fclose($sock);

foreach ($result as $value) echo $value;
}
?> Viel spaß damit!

TIIUNDER
25.07.2007, 12:19:25
Jawoll, super! Genau so wollte ich das haben.
Danke für die schnelle knappe Antwort ohne sinnloses rumgelaber...

Jetzt hab ich aber noch ein Problem:
Wenn ich jetzt nen Index aufrufe, also z.B.
Dieses Script greift auf www.meineseite.de/intern/ zu, dann werden mir dort die ganzen Dateien dieses Ordners angezeigt. Wenn ich dort jetzt auf die datei text.htm klicke, dann kommt die Meldung, dass diese Datei nicht existiert, da er sie als www.meineseite.de/test.htm aufrufen möchte (die echte Adresse ist aber www.meineseite.de/intern/test.htm)

Gibts da 'ne Lösung zu?

//EDIT:
Ich hab mir das Script nochmal angesehen und sehe für das obige Problem im Moment keine Lösung. Das Script ist wohl eher dazu geeignet, Downloads aus einem geschützen Verzeichnis zuzulassen (dazu werde ich das Script in Zukunft auch benutzen, denn danach habe ich auch gesucht).

Aber jetzt hätte ich einfach gerne ein Script, was die htaccess-Daten direkt an den Browser gibt (genau so wie das Standard htaccess-Fenster), bloß eben per HTML-Formular (falls das überhaupt irgendwie geht)

meikel (†)
25.07.2007, 18:34:38
Jawoll, super! Genau so wollte ich das haben.
Aha...

Wenn ich dort jetzt auf die datei text.htm klicke, dann kommt die Meldung, dass diese Datei nicht existiert, da er sie als www.meineseite.de/test.htm aufrufen möchte (die echte Adresse ist aber www.meineseite.de/intern/test.htm)

Das war abzusehen.

Gibts da 'ne Lösung zu?
Keine, die Dir gefällt.

Das Script ist wohl eher dazu geeignet, Downloads aus einem geschützen Verzeichnis zuzulassen
Selbst dafür gibt es bessere Lösungen, die ohne .htaccess auskommen.

Aber jetzt hätte ich einfach gerne ein Script, was die htaccess-Daten direkt an den Browser gibt (genau so wie das Standard htaccess-Fenster), bloß eben per HTML-Formular (falls das überhaupt irgendwie geht)
Geht nicht. Basic realm geht nur auf Protokollbasis:
- Server schickt dem Client die Authentifizierungsaufforderung
- Client erzeugt das Loginfenster, wenn ihm die Logindaten fehlen
Nach dem Click auf OK gehören beide Variablen mit zum Protokoll.

TIIUNDER
25.07.2007, 21:05:07
OK, dann werde ich es wohl so lassen müssen wie es ist (hatte eh nur optische Gründe), dennoch schade